创建具有多个根元素的XML

时间:2012-10-24 22:40:00

标签: c# .net xml

我正在尝试创建一个包含多个根元素的XML。我无法改变它,因为这是我应该将XML发送到服务器的方式。这是我尝试运行代码时遇到的错误:

  

System.InvalidOperationException:此操作将创建结构不正确的文档。

有没有办法覆盖这个错误并让它忽略这个?

好的,让我更好地解释一下:

这就是我所拥有的

XmlDocument doc = new XmlDocument();
doc.LoadXml(_application_data);

现在创建XML文档,我可以添加一个假根元素,以便它可以工作。但是,我需要摆脱它并将其转换为DocumentElement对象。

我将如何做到这一点?

3 个答案:

答案 0 :(得分:4)

创建XmlWriter时指定Fragment,如图here

所示
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.CloseOutput = false;

// Create the XmlWriter object and write some content.
MemoryStream strm = new MemoryStream();
using (XmlWriter writer = XmlWriter.Create(strm, settings))
{
    writer.WriteElementString("orderID", "1-456-ab");
    writer.WriteElementString("orderID", "2-36-00a");
    writer.Flush();
}

答案 1 :(得分:0)

如果它有多个根元素,那么它不是XML。如果它以其他方式类似于XML,您可以将所有内容放在根元素下,然后当您将字符串发送到服务器时,您只需组合此根元素的序列化子元素,或者@Austin指出,如果可用,请使用内部XML方法。

答案 2 :(得分:0)

只需使用单个根创建XML,然后将其内容作为XML文本。

你正在谈论XML片段,因为好的xml只有一个根。

这是帮助您入门的示例:

var xml = new XmlDocument();
var root = xml.CreateElement("root");
root.AppendChild(xml.CreateElement("a"));
root.AppendChild(xml.CreateElement("b"));
Console.WriteLine(root.InnerXml); // outputs "<a /><b />"