我正在用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作为转换的输出.
NB.xsl:output的某些部分将被忽略(例如编码),因为XmlDocument将使用自己的设置.
好吧,一个XmlWriter
不包含输出; 通常,您有一个支持对象(可能是一个StringBuilder
或者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;