【发布时间】:2010-01-25 21:51:38
【问题描述】:
我正在尝试使用 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) 运行上面的代码sn-p。
这会导致一些格式不正确的XML:
<Test>
<Node><SubNode /></Node>
</Test>
3) 取消注释此行:
document = XDocument.Parse(XDocument.Load(reader).ToString());
4) 再次运行 sn-p。
结果将被正确格式化:
<Test>
<Node>
<SubNode />
</Node>
</Test>
【问题讨论】:
-
能否包含test.xml文件的内容?
-
已编辑。该文件中的内容只是