XML中空格的处理取决于位置和解析方式:1. 元素内容中的空格(如换行、缩进)默认被保留,但某些解析器可忽略格式化空白;2. 使用xml:space="preserve"可强制保留空格,设为default则允许修剪;3. 属性值中的空格始终保留,需手动trim处理;4. 建议不依赖解析器自动清理,关键数据应手动去空格或使用XSLT的normalize-space()函数。空格处理最终由应用逻辑决定。

在XML中,空格的处理取决于它出现的位置以及所使用的解析方式。XML本身不会随意忽略空白字符,但某些情况下应用程序会根据需要进行处理。
1. 元素内容中的空格
如果空格出现在元素的文本内容中,比如标签之间的换行和缩进,它们被视为文档的一部分:
上面的例子中,"John Doe" 前后各有两个空格,这些空格会被保留在解析时的文本节点中。
需要注意的是,不同解析器对“空白”可能有不同处理方式:
- 保留所有空白: 某些解析器(如DOM解析器)默认保留所有空白字符。
- 忽略无关空白: 有些工具或设置可以忽略仅用于格式化文档的空白(例如标签之间的缩进),这通常称为“空白敏感性”设置。
2. 使用 xml:space 控制空格处理
XML支持通过 xml:space 属性来提示应用如何处理特定元素内的空白:
当设置为 preserve 时,应用程序应保留所有空白;设置为 default 时,表示可以正常处理或修剪空白。
3. 在属性值中的空格
属性值中的空格会被完整保留:
注意:name=" Alice " 中前后空格属于属性值的一部分,除非应用程序额外处理(如 trim),否则不会自动去除。
4. 解析时的建议
实际开发中,为了更可靠地处理空格,建议:
- 不要依赖解析器自动清理空白,尤其是关键数据。
- 在读取文本或属性值后,手动调用去空格操作(如 trim())。
- 若需保留多空格或排版,使用 xml:space="preserve" 明确声明。
- 使用规范化方法(normalize-space())在XSLT中处理:它会将多个连续空格转为一个,并去除首尾空格。
基本上就这些。XML本身很忠实于原始文本,空格是否重要,最终由你的应用逻辑决定。










