我正在用C#編寫Windows服務。我有一個XmlWriter
,它包含XSLT轉換的輸出。我需要將XML傳遞到XMLElement
對象以傳遞給Web服務。從C#中的XML編寫器創建XML元素對象#
這樣做的最好方法是什麼?
我正在用C#編寫Windows服務。我有一個XmlWriter
,它包含XSLT轉換的輸出。我需要將XML傳遞到XMLElement
對象以傳遞給Web服務。從C#中的XML編寫器創建XML元素對象#
這樣做的最好方法是什麼?
你並不需要一箇中間字符串,可以創建直接寫入到一個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:輸出的某些部分將被忽略(例如編碼),因爲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;
如果您提供了一個編寫器,您需要提供一個輸出生成器正在傳輸數據的存儲庫,因此Richard的重播是好的,您並不需要一個字符串生成器來將數據從閱讀器發送到XmlDocument!
我總是很驚訝你的答案如此全面和完整,以至於幾乎沒有其他人可以添加任何東西。 :-) – Cerebrus 2009-02-18 12:42:50