XML中特殊字符必须转义,否则会导致解析失败或文档结构错误;核心原则是:小于号(,双引号(")转为",单引号(')转为',&符号转为&。

XML中特殊字符必须转义,否则会导致解析失败或文档结构错误。核心原则是:小于号()在特定位置才需转义。
必须转义的两个关键字符
XML解析器把 当作标签起始,把 & 当作实体开始符,所以它们在文本内容或属性值中任何时候都不能直接出现,必须替换为预定义实体:
- →
- & → &
引号的转义看使用场景
双引号(")和单引号(')只在作为属性定界符时才需要转义——比如属性值用双引号包围,里面再出现双引号,就必须转义;反之亦然:
- name="张"三" ✅(双引号属性内含双引号,用 ")
- name='张'三' ✅(单引号属性内含单引号,用 ')
-
他说:"你好" ✅(文本内容中的引号无需转义)
大于号(>)一般不用转义
XML规范允许 > 直接写在内容中(如 a c),但为避免混淆(尤其在嵌套 或注释中),部分工具或习惯会转义为 >。这不是强制要求,但保持统一可减少意外。
推荐做法:优先用CDATA包裹大段文本
当一段内容含多个特殊字符(如HTML代码、SQL语句、JS脚本),与其逐个转义,不如用 包裹:
- <script><![CDATA[if (a d) { alert("OK"); }]]></script>
- CDATA区内所有字符(包括 、&、")都按原样处理,不解析、不转义
- 注意:CDATA不能嵌套,且不能出现在属性值中
基本上就这些。记住 & 和 可不转但建议统一,复杂内容交给 CDATA —— 清晰又安全。










