.net – XmlDocument混合内容漂亮打印行为的基本原理是什么?

前端之家收集整理的这篇文章主要介绍了.net – XmlDocument混合内容漂亮打印行为的基本原理是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当使用XmlDocument.Save(TextWriter)漂亮打印混合内容节点时,.NET XmlDocument有一个有趣的行为.

行为可以概括为“一旦漂亮的打印机遇到文本节点,它就会禁用当前子树的其余部分的缩进和自动换行”.

这是一个例子(http://ideone.com/b1WxD7):

@H_502_5@<?xml version='1.0'?> <root><test><child1/><child2/>foo<child3><child4/></child3></test></root>

非常印刷

@H_502_5@<?xml version="1.0"?> <root> <test> <child1 /> <child2 />foo<child3><child4 /></child3></test> </root>

这种行为似乎不正确也不直观.为什么XmlDocument会那样工作?

这种行为是不幸的,但我认为可以通过XmlTextWriter的 Formatting.Indented选项的描述来解释(这是XmlDocument.Save在这里使用的):

Causes child elements to be indented according to the 07001 and 07002 settings.
This option indents element content only; mixed content is not affected.

此选项的目的是保留XML的格式

@H_502_5@<p>Here is some <b>bold</b> text.</p>

并没有重新格式化为

@H_502_5@<p> Here is some <b> bold </b> text. </p>

但是有一个问题:XmlTextWriter如何知道元素包含混合内容?因为XmlTextWriter是non-cached,forward-only编写器,所以答案是它直到它实际遇到字符数据.此时,它切换到“混合内容”模式并禁止格式化.不幸的是,撤消已经写入底层流的子节点的格式化为时已晚.

原文链接:https://www.f2er.com/xml/452483.html

猜你在找的XML相关文章