从C#中的XML Writer创建XML Element对象

时间:2009-02-18 12:24:58

标签: c# xml xmlwriter

我正在用C#编写Windows服务。我有一个XmlWriter,它包含XSLT转换的输出。我需要将XML转换为XMLElement对象以传递给Web服务。

这样做的最佳方式是什么?

3 个答案:

答案 0 :(得分:8)

您不需要中间字符串,可以创建直接写入XmlNode的XmlWriter:

XmlDocument doc = new XmlDocument();
using (XmlWriter xw = doc.CreateNavigator().AppendChild()) {
  // Write to `xw` here.
  // Nodes written to `xw` will not appear in the document 
  // until `xw` is closed/disposed.
}

并传递xw作为变换的输出。

NB。 xsl:output的某些部分将被忽略(例如编码),因为XmlDocument将使用自己的设置。

答案 1 :(得分:7)

好吧,XmlWriter 不包含输出;通常,您有一个支持对象(可能是StringBuilderMemoryStream),它是转储位置。在这种情况下,StringBuilder可能是效率最高的......或许类似于:

    StringBuilder sb = new StringBuilder();
    using (XmlWriter writer = XmlWriter.Create(sb))
    {
        // TODO write to writer via xslt
    }
    string xml = sb.ToString();
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(xml);
    XmlElement el = doc.DocumentElement;

答案 2 :(得分:0)

如果你提供一个编写器,你提供了一个存储库,输出生成器正在传输数据,因此理查的重放很好,你不需要字符串生成器将数据从阅读器发送到XmlDocument!