我正在尝试创建一个包含多个根元素的XML。我无法改变它,因为这是我应该将XML发送到服务器的方式。这是我尝试运行代码时遇到的错误:
System.InvalidOperationException:此操作将创建结构不正确的文档。
有没有办法覆盖这个错误并让它忽略这个?
好的,让我更好地解释一下:
这就是我所拥有的
XmlDocument doc = new XmlDocument();
doc.LoadXml(_application_data);
现在创建XML文档,我可以添加一个假根元素,以便它可以工作。但是,我需要摆脱它并将其转换为DocumentElement对象。
我将如何做到这一点?
答案 0 :(得分:4)
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 />"