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

时间:2013-09-03 12:46:47

标签: c# xml linq-to-xml xelement xmlwriter

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

有关如何从XmlWriter创建XmlDocument的示例,请参阅How to create a XmlDocument using XmlWriter in .NET?,尽管使用稍微偏离滑雪道的代码模式。如果我想要一个XDocument(或XElement子树),是否有类似的选项?

1 个答案:

答案 0 :(得分:5)

查看XContainer.CreateWriter Method

  

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.
}