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」である場合は保存できない理由を理解しようとしています。何か案は?
ジョーダン