2009-12-08 63 views
6

我有一個XElement實例,我希望使用XmlWriter類寫入流。爲什麼?那麼,其中一個配置設置定義了是否使用二進制Xml。基於此設置,將創建一個合適的XmlWriter實例 - 通過XmlWriter.Create(stream)XmlDictionaryWriter.CreateBinaryWriter(stream))創建。如何使用XmlWriter將System.Xml.Linq.XElement寫入流

無論如何,我想下面的代碼,但它留下的空流:

using (var stream = new MemoryStream()) 
{ 
    var xmlReader = new XDocument(xml).CreateReader(); 
    xmlReader.MoveToContent(); 
    var xmlWriter = GetXmlWriter(stream); 
    xmlWriter.WriteNode(xmlReader, true); 
    return stream.ToArray(); 
} 

我已經檢查,xmlReader正確MoveToContent在根XML元素之後對齊。

我一定在做錯事,但什麼?

謝謝。

回答

10

你沒有顯示GetXmlWriter的功能......但是你是否嘗試過刷新作者?

xmlWriter.Flush(); 

另外,包裹XmlWriter在另一個using聲明:

​​

你可能想要做同樣的XmlReader爲好,但在這種特殊情況下,我不相信你特別需要至。

說了這麼多,我不完全確定你爲什麼要使用XmlReader。任何原因,你不能找到相關的XElement和使用XElement.WriteTo(XmlWriter)?或者如果您要複製整個文檔,只需使用XDocument.WriteTo(XmlWriter)

+0

就是這樣。我沒有沖洗作家。謝謝。 – mark 2009-12-08 08:46:52

+0

順便說一句,感謝您的評論,我會相應地改變我的實施。 – mark 2009-12-08 08:47:38