[英]How to write System.Xml.Linq.XElement using XmlWriter to a stream
我有一個XElement
實例,我希望使用XmlWriter
類寫入流。 為什么? 好吧,其中一個配置設置定義是否使用二進制Xml。 基於此設置,將創建一個合適的XmlWriter
實例 - 通過XmlWriter.Create(stream)
或XmlDictionaryWriter.CreateBinaryWriter(stream))
。
無論如何,我正在嘗試以下代碼,但它將流留空:
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
在根XML元素的MoveToContent
之后正確對齊。
我一定做錯了什么,但是什么?
謝謝。
你沒有展示GetXmlWriter的作用......但是你試過刷新作者嗎?
xmlWriter.Flush();
或者,將XmlWriter
包裝在另一個using
語句中:
using (var stream = new MemoryStream())
{
var xmlReader = new XDocument(xml).CreateReader();
xmlReader.MoveToContent();
using (var xmlWriter = GetXmlWriter(stream))
{
xmlWriter.WriteNode(xmlReader, true);
}
return stream.ToArray();
}
您可能也希望對XmlReader
也這樣做,盡管在這種特殊情況下我不相信您特別需要。
說完這一切之后,我不完全確定你為什么要使用XmlReader
。 你有什么理由不能找到相關的XElement
並使用XElement.WriteTo(XmlWriter)
嗎? 或者,如果您要復制整個文檔,只需使用XDocument.WriteTo(XmlWriter)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.