C# WriteNode(XmlReader)使用内存流写入无效的XML
我需要将XML流规范化为UTF-16。我使用以下方法: 传递的所有流都是字节流:MemoryStream或FileStream。我的问题是,当我将包含以下(正确编码的)XML的文件流作为jobTicket传入时:C# WriteNode(XmlReader)使用内存流写入无效的XML,c#,encoding,xmlreader,xmlwriter,C#,Encoding,Xmlreader,Xmlwriter,我需要将XML流规范化为UTF-16。我使用以下方法: 传递的所有流都是字节流:MemoryStream或FileStream。我的问题是,当我将包含以下(正确编码的)XML的文件流作为jobTicket传入时: <?xml version="1.0" encoding="utf-8"?> <workflow> <file> <request name="create-temp-file" tag="очень"&
<?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>
我错过了什么?xmlWtr不应该编写正确的xml声明吗?我必须寻找一个声明并替换它吗?您应该从读取流中删除xml声明,因为它会复制它而不做任何更改。Xml编写器将为您编写正确的:
using (XmlWriter xmlWtr = XmlWriter.Create(ticketStreamU16, settings))
{
xmlRdr.MoveToContent();
xmlWtr.WriteNode(xmlRdr, false);
}
不,你必须自己做。
using (XmlWriter xmlWtr = XmlWriter.Create(ticketStreamU16, settings))
{
xmlRdr.MoveToContent();
xmlWtr.WriteNode(xmlRdr, false);
}