0

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

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

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

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

这是我所拥有的

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

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

我该怎么做呢?

4

3 回答 3

4

在创建 XmlWriter 时指定Fragment ,如下所示

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();
}
于 2012-10-24T22:43:35.907 回答
0

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

于 2012-10-24T22:43:17.860 回答
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 />"
于 2012-10-24T22:53:18.820 回答