2009-02-18 77 views

回答

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作爲變換的輸出。

注意: xsl:輸出的某些部分將被忽略(例如編碼),因爲XmlDocument將使用其自己的設置。

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; 
+0

我總是很驚訝你的答案如此全面和完整,以至於幾乎沒有其他人可以添加任何東西。 :-) – Cerebrus 2009-02-18 12:42:50

0

如果您提供了一個編寫器,您需要提供一個輸出生成器正在傳輸數據的存儲庫,因此Richard的重播是好的,您並不需要一個字符串生成器來將數據從閱讀器發送到XmlDocument!