我正在用 C# 编写一个 Windows 服务。我有一个XmlWriter
包含 XSLT 转换的输出。我需要将 XML 放入XMLElement
对象中以传递给 Web 服务。
做这个的最好方式是什么?
您不需要中间字符串,您可以创建一个直接写入 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 将使用它自己的设置。
好吧, anXmlWriter
不包含输出;通常,您有一个支持对象(可能是 aStringBuilder
或MemoryStream
),它是倾倒地点。在这种情况下,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;
如果您提供一个编写器,您就提供了一个存储库,其中输出生成器正在传输数据,因此 Richard 的重播很好,您实际上不需要字符串生成器来将数据从读取器发送到 XmlDocument!