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

标签 .net xmldocument xmlwriter

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

相关文章:

c# - 在不调用 XmlWriter.WriteStartDocument() 的情况下使用 XmlWriter.WriteEndDocument() 是否可行

.net - 如何将不同的 tabItems 绑定(bind)到不同的 ViewModel

c# - 为什么 sslStream.AuthenticateAsServer 不需要 UAC 和替代品

c# - XmlDocument CreateElement 在前缀元素下没有 xmlns

C# 从 xml 属性中获取值

c# - XmlDocument 不保存字符实体

c# - 在 C# 中合并两个 XML 文件,其中一个不一致

c# - 如何将 Azure AD 身份验证添加到现有 .net 网站

c# - 如何使用 XmlWriter 编写带有十进制样式实体的 XML

python - 导入错误 : No module named elementtree. SimpleXMLWriter