许多 .NET 函数使用 XmlWriter 来输出/生成 xml。输出到文件/字符串/内存是一个非常操作:
XmlWriter xw = XmlWriter.Create(PutYourStreamFileWriterEtcHere);
xw.WriteStartElement("root");
...
有时,您需要操作生成的 Xml,因此希望将其加载到 XmlDocument 中,或者由于某些其他原因可能需要 XmlDocument,但必须使用 XmlWriter 生成 XML。例如,如果您调用第 3 方库中的函数,该函数仅输出到 XmlWriter。
您可以做的事情之一是将 xml 写入字符串,然后将其加载到您的 XmlDocument 中:
StringWriter S = new StringWriter();
XmlWriter xw = XmlWriter.Create(S);
/* write away */
XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(S.ToString());
然而,这是低效的 - 首先将所有 xml 信息序列化为字符串,然后再次解析该字符串以创建 DOM。
如何让 XmlWriter 直接构建 XmlDocument?
最佳答案
这里至少有一个解决方案:
XmlDocument doc = new XmlDocument();
using (XmlWriter writer = doc.CreateNavigator().AppendChild())
{
// Do this directly
writer.WriteStartDocument();
writer.WriteStartElement("root");
writer.WriteElementString("foo", "bar");
writer.WriteEndElement();
writer.WriteEndDocument();
// or anything else you want to with writer, like calling functions etc.
}
显然,当您调用 AppendChild() 时,XpathNavigator 会为您提供一个 XmlWriter
感谢 Martin Honnen:http://groups.google.com/group/microsoft.public.dotnet.xml/browse_thread/thread/24e4c8d249ad8299?pli=1
关于.net - 如何在.NET中使用XmlWriter创建XmlDocument?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1346995/