5

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

做这个的最好方式是什么?

4

3 回答 3

10

您不需要中间字符串,您可以创建一个直接写入 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 作为变换的输出传递。

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

于 2009-02-18T12:53:56.933 回答
7

好吧, anXmlWriter包含输出;通常,您有一个支持对象(可能是 aStringBuilderMemoryStream),它是倾倒地点。在这种情况下,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;
于 2009-02-18T12:32:49.997 回答
0

如果您提供一个编写器,您就提供了一个存储库,其中输出生成器正在传输数据,因此 Richard 的重播很好,您实际上不需要字符串生成器来将数据从读取器发送到 XmlDocument!

于 2014-08-06T10:57:14.410 回答