.NET XMLDocument.PreserveWhitespace:如何保留重要的空白?

Posted

技术标签:

【中文标题】.NET XMLDocument.PreserveWhitespace:如何保留重要的空白?【英文标题】:.NET XMLDocument.PreserveWhitespace: How to keep significant white spaces? 【发布时间】:2021-09-23 13:50:14 【问题描述】:

简单来说,我有一个这样的 XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><root> <data> </data></root>

如您所见,根条目标记后有空格,数据标记中有空格。当我现在这样使用它时:

var xmldoc = new XmlDocument();
xmldoc.Load(stream);

...文档丢失了两个空格,根条目标记之后的一个和数据标记中的一个。

但是如果我这样使用它:

var xmldoc = new XmlDocument();
xmldoc.PreserveWhitespace = true;
xmldoc.Load(stream);

...那么两个空格都会被保留。

但根据文档(documentation,备注部分),默认设置 PreserveWhitespace = false 应该保留重要的空白并去除不重要的空白。但它会清除所有这些,并且数据标签中的那个很重要。还是我在这里理解有问题?

【问题讨论】:

【参考方案1】:

重要的空格是文本之间的空格,例如“这是一个示例”,但像您描述的空标签并不重要,将被 xml 解析器删除。

【讨论】:

谢谢,我对“重要空白”的理解有误。 ... 这导致了这个问题:***.com/questions/68388807/… 不,问题一定是,为什么xml中需要空格? 保存序列化对象的数据(序列化对象属性,字符串类型,有时有一个空格作为其值 - 在 XML 之外,它是重要信息) 如果空格那么重要,那么您应该重新考虑使用 xml。每个 xml 解析器都可以显示不同的 xml,并在演示中留下空格。 xml 反序列化器和序列化器将负责填充属性和添加元素。默认情况下,对象(类)中的字符串属性将具有空值。如果该属性在被序列化时为空,它将被跳过(这就是您创建可选元素的方式)如果它使用内容或 string.empty 进行初始化,它将创建该元素。这也适用于相反的方式。

以上是关于.NET XMLDocument.PreserveWhitespace:如何保留重要的空白?的主要内容,如果未能解决你的问题,请参考以下文章

.NET平台系列26:在 Windows 上安装 .NET Core/.NET5/.NET6

[.NET大牛之路 005] .NET 的执行模型

ADO.NET和.NET的关系?

VS2022 安装.NET 3.5/.NET 4/.NET 4.5/.NET 4.5.1目标包的方法

.net core 3.0和.net5有什么区别

能说一下ADO.NET 和.NET,还有asp.NET的区别吗?