XDocument添加多个XElements

时间:2014-02-12 09:55:42

标签: c# windows-phone-8 linq-to-xml

在我的Windows Phone 8 C#/ XAML .NET 4.5项目中,我正在尝试创建一个结构类似的XDocument:

<element1>
  <subelement1>
  </subelement1>
  <subelement2>
     ...etc...
  </subelement2>
</element1>

<element2>
  <subelement1>
  </subelement1>
  <subelement2>
     ...etc...
  </subelement2>
</element2>

创建文档的方法看起来像(为了问题目的而简化):

... createXML()
{
    XDocument doc = new XDocument();

    XElement elem1 = new XElement("element1");
    elem1.Add(new XElement("subelement1"));
    XElement elem2 = new XElement("element2");

    doc.Add(elem1);
    doc.Add(elem2);
}

但是我一直在说InvalidOperationException说它会创建一个无效的文档结构。

我知道为什么 - 它会导致文档有多个“根节点” - 但我实际上需要它。

第三方完成的Web服务需要此结构,该文档将文档作为字符串接收。

所以问题是“如何实现这个结构?我应该使用其他一些XObject吗?”

(我知道最简单的解决方案可能就是使用XElements的集合......只是问问'是否有其他出于好奇的方式)

1 个答案:

答案 0 :(得分:1)

您在帖子顶部指定的结构是非法的,因为有效的XML文档必须只有一个根元素;您的文档在顶层有两个元素,这是不允许的。

您可以通过在创建时添加根元素来解决此问题,然后在阅读文档时将其丢弃;

document = new XDocument(new XElement("root", elem1, elem2));