鉴于此代码(C#,.NET 3.5 SP1):
var doc = new XmlDocument();
doc.LoadXml("<?xml version=\"1.0\"?><root>"
+ "<value xml:space=\"preserve\">"
+ "<item>content</item>"
+ "<item>content</item>"
+ "</value></root>");
var text = new StringWriter();
var settings = new XmlWriterSettings() { Indent = true, CloseOutput = true };
using (var writer = XmlWriter.Create(text, settings))
{
doc.DocumentElement.WriteTo(writer);
}
var xml = text.GetStringBuilder().ToString();
Assert.AreEqual("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<root>\r\n"
+ " <value xml:space=\"preserve\"><item>content</item>"
+ "<item>content</item></value>\r\n</root>", xml);
断言失败,因为在元素XmlWriter
周围插入换行符和缩进<item>
,这似乎与xml:space="preserve"
属性相矛盾。
我正在尝试输入没有空格(或只有重要的空格,并且已经加载到 中XmlDocument
)并漂亮地打印它而不在标记为保留空格的元素内添加任何空格(出于明显的原因)。
这是一个错误还是我做错了什么?有没有更好的方法来实现我想要做的事情?
编辑:我可能应该补充一点,我必须在输出端使用XmlWriter
with Indent=true
。在“真实”代码中,这是从我的代码外部传入的。