Skip to main content
 首页 » 编程设计

.net之如何在.NET中使用XmlWriter创建XmlDocument

2024年05月22日29tintown

许多 .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