加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML文件中的特殊字符 – 使用DOM API进行处理

发布时间:2020-12-16 05:33:05 所属栏目:百科 来源:网络整理
导读:我有一个 XML格式的文件(仅包含根开始和结束标记,以及根目录的子项).儿童的文本元素包含符号amp ;.在XML中,不允许使用此符号以使文档有效,当我尝试使用 Java中的DOM API和XML解析器处理文件时,我获得了解析错误.因此,我已经取代了使用 amp;和我成功处理了文
我有一个 XML格式的文件(仅包含根开始和结束标记,以及根目录的子项).儿童的文本元素包含&符号&amp ;.在XML中,不允许使用此符号以使文档有效,当我尝试使用 Java中的DOM API和XML解析器处理文件时,我获得了解析错误.因此,我已经取代了&使用& amp;和我成功处理了文件:我必须在不同的纯文本文件中提取文本元素的值.

当我打开这些新创建的文本文件时,我希望看到& amp;,但是有& amp;代替.为什么是这样?我已经将文本存储在没有任何扩展名的文本文件中(我的原始文件,XML格式也没有.xml扩展名),而且我确实只有&在新文件的文本中,无论我如何打开文件:作为txt或xml文件(这些是我的XML编辑器中的一些选项).究竟发生了什么? Java(?)转换& amp;到&自动?或者有一些默认编码?嗯,& amp;代表&,我想有一些“看不见的”自动转换,但我很困惑何时以及如何发生这种情况.以下是我使用Java处理原始文件后收到的原始文件和提取文件的示例:

这是我的XML格式的“negative.review”文件:

<review>
<review_text>
I will not wear it as it is too big &amp; looks funny on me. 
</review_text>
</review>

这是我提取的文件“negative_1”:

I will not wear it as it is too big & looks funny on me.

对我来说,重要的是保持原始数据的原样(不进行任何转换/替换),所以我认为我必须处理提取的文件“negative_1”转换回& amp;到&amp ;.如你所见,似乎我不必这样做.但我不明白为什么:(.

先感谢您!

原因很简单:XML文件确实包含“&”字符.

它只是表示不同(即它是“逃脱”),因为一个真正的“&”正如你所见,它自己打破了XML文件.阅读XML 1.0规范中的相关部分:“2.4 Character Data and Markup”.这只是几行,但它很好地解释了这个问题.

XML是数据的表示(!).不要将其视为文本文件.例:

您希望将字符串“17< 20”存储在XML文件中.最初,你不能,因为“<”保留为开始标记括号.所以这将是无效的:

<xml>17 < 20</xml>

解决方案:您在特殊/保留字符上使用字符转义,只是为了保留文件的有效性:

<xml>17 &lt; 20</xml>

出于所有实际目的,上面的代码段包含以下数据(这次以JSON表示):

{
  "xml": "17 < 20"
}

这就是为什么你看到真正的“&”在你的后期处理中.它以同样的方式逃脱了,但它的意思始终保持不变.

上面的例子也解释了为什么“&”必须特别对待:它本身是XML转义机制的一部分.它标志着转义序列的开始,例如“& lt;”.因此它必须自行逃脱(使用“& amp;”,就像你已经完成的那样).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读