【发布时间】:2019-01-19 20:25:47
【问题描述】:
我有一个简单的 XML 文件
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Document>
<DATEN>
<DTA_Coding_Line>0100011509856>249099000000000000004039555+ 010001456></DTA_Coding_Line>
</DATEN>
</Document>
我已经用几个在线 XML 验证工具验证了这个文件,它不会产生错误。
然而,在 XML 文档中,我可以读到我必须使用 &gt; 转义“>”字符。
- 这是强制性的吗?
- 什么时候需要将
&gt;替换为&gt;? - 如果读取上面这个文件的软件有
&gt;没有被转义的问题,它仍然可以被认为是“兼容”XML标准吗? - 有这样的“合规”吗?
【问题讨论】:
-
答案是一些 xml 解析器可能会阻塞嵌入在标记和属性中的 XML 实体,这些标记和属性是作为规范的一部分的保留字符。使用 CDATA 部分将解决这个问题,因为规范规定它可以保存 CDATA 开始和结束序列之间的任何内容,即
<![CDATA[]]> -
HTML 发送时只需要替换。这些是 HTML 的特殊字符,如果 xml 是 html 消息的一部分,则需要替换。
-
为了将来参考,在 Stack Overflow 上,您可以将
&gt;格式化为代码(通过周围的 ` 字符),因此您无需添加空格。 -
根据 W3C XML 建议和 @spodger's answer 此处 (+1),> 当
]]>未结束 CDATA 部分时,> 仅需要作为&gt;的一部分作为]]>的一部分进行转义。这是非常罕见的(因此在我对What characters do I need to escape in XML documents? 的最终Simplified XML Escaping 回答中被标记为深奥)。
标签: xml xml-parsing