我希望能够格式化一个XDocument,但是保留
这段代码:
以下是我想要的缩进输出结果:
然而,假设我需要保留元素内的空白:
在这种情况下,我会得到以下输出:
xml:space="preserve"
元素中的空格不变。这段代码:
new XDocument(
new XElement("a",
new XElement("b",
new XElement("c"))))
.Save(Console.Out);
以下是我想要的缩进输出结果:
<a>
<b>
<c />
</b>
</a>
然而,假设我需要保留元素内的空白:
new XDocument(
new XElement("a",
new XElement("b",
new XAttribute(XNamespace.Xml + "space", "preserve"),
new XElement("c"))))
.Save(Console.Out);
在这种情况下,我会得到以下输出:
<a>
<b xml:space="preserve">
<c />
</b>
</a>
这不太好,因为缩进是在xml:space="preserve"
范围内添加的。预期输出应该是:
<a>
<b xml:space="preserve"><c /></b>
</a>
我很惊讶XDocument默认不支持此功能。
是否可能从XDocument获得漂亮的格式化(缩进)输出,并保留xml:space="preserve"
中的空格?
我知道一个选项是编写自己的XmlWriter实现来处理这个问题,但如果有可用的框架,我宁愿使用框架提供的方法。