.net – XmlDocument混合内容漂亮打印行为的基本原理是什么?
发布时间:2020-12-15 23:53:18 所属栏目:百科 来源:网络整理
导读:当使用XmlDocument.Save(TextWriter)漂亮打印混合内容节点时,.NET XmlDocument有一个有趣的行为. 行为可以概括为“一旦漂亮的打印机遇到文本节点,它就会禁用当前子树的其余部分的缩进和自动换行”. 这是一个例子(http://ideone.com/b1WxD7): ?xml version='
当使用XmlDocument.Save(TextWriter)漂亮打印混合内容节点时,.NET XmlDocument有一个有趣的行为.
行为可以概括为“一旦漂亮的打印机遇到文本节点,它就会禁用当前子树的其余部分的缩进和自动换行”. 这是一个例子(http://ideone.com/b1WxD7): <?xml version='1.0'?> <root><test><child1/><child2/>foo<child3><child4/></child3></test></root> 非常印刷 <?xml version="1.0"?> <root> <test> <child1 /> <child2 />foo<child3><child4 /></child3></test> </root> 这种行为似乎不正确也不直观.为什么XmlDocument会那样工作?
这种行为是不幸的,但我认为可以通过XmlTextWriter的
Formatting.Indented选项的描述来解释(这是XmlDocument.Save在这里使用的):
此选项的目的是保留XML的格式 <p>Here is some <b>bold</b> text.</p> 并没有重新格式化为 <p> Here is some <b> bold </b> text. </p> 但是有一个问题:XmlTextWriter如何知道元素包含混合内容?因为XmlTextWriter是non-cached,forward-only编写器,所以答案是它直到它实际遇到字符数据.此时,它切换到“混合内容”模式并禁止格式化.不幸的是,撤消已经写入底层流的子节点的格式化为时已晚. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |