我正在构建一个 XDocument 并使用以下代码将其序列化为 UTF8 字符串:
string xmlString = "";
using (MemoryStream ms = new MemoryStream())
{
using (XmlWriter xw = new XmlTextWriter(ms, Encoding.UTF8))
{
doc.Save(xw);
xw.Flush();
StreamReader sr = new StreamReader(ms);
ms.Seek(0, SeekOrigin.Begin);
xmlString = sr.ReadToEnd();
}
}
这工作得很好。
然后我需要切换声明符是否被序列化为字符串。我将代码更改为:
string xmlString = "";
using (MemoryStream ms = new MemoryStream())
{
XmlWriterSettings settings = new XmlWriterSettings()
{
OmitXmlDeclaration = !root.IncludeDeclarator,
Encoding = Encoding.UTF8
};
using (XmlWriter xw = XmlTextWriter.Create(ms, settings))
{
doc.Save(xw);
xw.Flush();
StreamReader sr = new StreamReader(ms);
ms.Seek(0, SeekOrigin.Begin);
xmlString = sr.ReadToEnd();
}
}
这会在 doc.Save(xw) 上引发以下异常:
前缀 '' 不能在同一起始元素标记内从 '' 重新定义为 'my_schema_here'。
我试图弄清楚为什么如果作者是“新”编者可以保存 XDoc,但如果它是“.Create”d 则不能。有任何想法吗?
乔丹