You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在XML元素名称末尾添加或保留尾随空格?

XML属性值末尾空格保留解决方案

针对你遇到的XML解析时属性值末尾空格被修剪的问题,给出以下几个可行的解决思路:

1. 检查XML Schema/DTD的属性类型定义

如果你的XML关联了Schema(XSD)或DTD文件,确认reas_grp_desc_1的属性类型是否为CDATA:

  • 如果属性被定义为NMTOKEN、ID、ENTITY等非CDATA类型,XML解析器会自动修剪属性值的首尾空白,此时需要将属性类型修改为CDATA,解析器就会保留原始的空白字符。

2. 配置XML解析器的空白保留规则

部分XML解析器支持关闭自动修剪空白的行为:

  • Java环境中,可通过DocumentBuilderFactory.setIgnoringElementContentWhitespace(false)关闭元素内容空白忽略(注意需配合CDATA属性类型确保属性值空白保留);
  • C#环境中,设置XmlReaderSettings.IgnoreWhitespace = false,让解析器不自动处理属性值的空白字符。

3. 使用XML不规范化的Unicode空白字符

普通空格( )和非换行空格( )可能被解析器或后续程序识别为可修剪的空白,尝试使用以下Unicode空白变体,它们视觉上与普通空格一致,但不会被XML自动规范化:

  • Ogham空格标记: 
  • En空格: 
  • Em空格: 

示例代码:

<default_reason reas_grp_desc_1="Filler&#x1680;" reas_grp_desc_2="Filler - Electrical" reas_desc="Aseptic chamber unsterile" last_edit_comment="" />

4. 调整XML结构,用CDATA包裹元素内容

如果允许修改XML结构,可将需要保留空格的属性转为子元素,并用CDATA包裹内容,确保空白完全保留:

<raw_reason raw_reas_cd="FLR0002" prompt="False" priority="1000" min_time_before_activation="00:00:00" last_edit_comment="" description="">
  <expression><![CDATA[MyContainer.PLC.Machine.State ==50002]]></expression>
  <default_reason>
    <reas_grp_desc_1><![CDATA[Filler ]]></reas_grp_desc_1>
    <reas_grp_desc_2>Filler - Electrical</reas_grp_desc_2>
    <reas_desc>Aseptic chamber unsterile</reas_desc>
    <last_edit_comment></last_edit_comment>
  </default_reason>
</raw_reason>

CDATA段会完整保留内部所有字符,不受XML解析器的空白规范化规则影响。

内容的提问来源于stack exchange,提问作者queryDotNet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 14:35:22