ReplaceWith() を使用してノードを置き換えようとしていますが、結果として不適切な形式の XML (改行やインデントの欠落) が発生することに気付きました。
誰もこの問題に遭遇したことがありますか?
コードスニペット:
[Test]
public void Test()
{
XDocument document;
using (var reader = XmlReader.Create("C:\\test.xml"))
{
// *** Running this line results in new lines OMITTED ***
document = XDocument.Load(reader);
// *** Running this line results in proper formatting ***
//document = XDocument.Parse(XDocument.Load(reader).ToString());
}
var newNode = new XElement("Node", new XElement("SubNode"));
document.Root.Element("Node").ReplaceWith(newNode);
Console.Out.WriteLine("document = {0}", document);
}
再現する手順:
1) 以下を使用して C:\test.xml を作成します。
<Test>
<Node/>
<Test>
2) 上記のコード スニペットを実行します。
これにより、一部の不適切な形式の XML が生成されます。
<Test>
<Node><SubNode /></Node>
</Test>
3) 次の行のコメントを外します。
document = XDocument.Parse(XDocument.Load(reader).ToString());
4) スニペットを再度実行します。
結果は適切にフォーマットされます。
<Test>
<Node>
<SubNode />
</Node>
</Test>