簡體   English   中英

如何使用XmlWriter將System.Xml.Linq.XElement寫入流

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM