如何在给定XmlWriter的情况下创建XDocument?

red*_*alx 2 c# xml xelement xmlwriter linq-to-xml

我们有一个将XML写入XmlWriter的方法,我们使用它直接生成XML流,而不必通过某种形式的DOM.但是在某些情况下我们确实想要创建DOM.一种方法是始终构建一个DOM并从中流式传输(以满足这两个要求),但我们喜欢直接编写XML的性能.因此,我们希望从XmlWriter构建DOM.

请参见如何在.NET中使用XmlWriter创建XmlDocument?有关如何从XmlWriter创建XmlDocument的示例,尽管使用略微偏离滑雪的代码模式.如果我想要一个XDocument(或XElement子树),是否有类似的选项?

dtb*_*dtb 7

看看XContainer.CreateWriter方法:

XContainer.CreateWriter方法

创建一个XmlWriter,可用于将节点添加到XContainer.

XDocument和XElement都是XContainers.

例:

XDocument doc = new XDocument();
using (XmlWriter writer = doc.CreateWriter())
{
    // 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.
}
Run Code Online (Sandbox Code Playgroud)

  • 我也是这么想的,从性能的角度来看,唯一需要考虑的是,在 writer.Close() 上,XDocument 的 Add() 函数用于添加完整的 XML。 (2认同)