[英]XMLReader to XML file using XMLWriter WriteNode - Very Slow for Large XML
[英]XmlWriter.WriteNode(XmlReader) writes invalid XML using memory streams
我需要將XML流標准化為UTF-16。 我使用以下方法:
傳遞的所有流都是字節流:MemoryStream或FileStream。 我的問題是當我傳入包含以下(正確編碼)XML的文件流作為jobTicket時:
<?xml version="1.0" encoding="utf-8"?>
<workflow>
<file>
<request name="create-temp-file" tag="очень">
</request>
<request name="create-temp-folder" tag="非常に">
</request>
</file>
</workflow>
ticketStreamU16包含一個XML聲明,並帶有以UTF-16表示的UTF-8編碼聲明。 這是格式不正確的XML。
public void EncodeJobTicket(Stream jobTicket, Stream ticketStreamU16)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = Encoding.Unicode;
if (jobTicket.CanSeek)
{
jobTicket.Position = 0;
}
using (XmlReader xmlRdr = XmlReader.Create(jobTicket))
using (XmlWriter xmlWtr = XmlWriter.Create(ticketStreamU16, settings))
{
xmlWtr.WriteNode(xmlRdr, false);
}
}
我想念什么? xmlWtr是否應該編寫正確的xml聲明? 我是否需要查找聲明並替換它?
您應該從讀取流中刪除xml聲明,因為它無需更改即可復制它。 Xml writer將為您編寫正確的代碼:
using (XmlWriter xmlWtr = XmlWriter.Create(ticketStreamU16, settings))
{
xmlRdr.MoveToContent();
xmlWtr.WriteNode(xmlRdr, false);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.