协慌网

登录 贡献 社区

我需要在 XML 文档中转义哪些字符?

必须在 XML 文档中转义哪些字符,或者在哪里可以找到这样的列表?

答案

如果您使用适当的类或库,他们将为您进行转义。许多 XML 问题都是由字符串连接引起的。

XML 转义字符

只有五个:

"   "
'   '
<   &lt;
>   &gt;
&   &amp;

转义字符取决于特殊字符的使用位置。

可以在W3C 标记验证服务中验证这些示例。

文本

安全的方法是在文本中转义所有五个字符,但是,三个字符"'>不需要在文本中转义:

<?xml version="1.0"?>
<valid>"'></valid>

属性

安全的方法是转义属性中的所有五个字符,但是, >字符不需要在属性中转义:

<?xml version="1.0"?>
<valid attribute=">"/>

如果引号是""则不需要在属性中转义'字符:

<?xml version="1.0"?>
<valid attribute="'"/>

同样, "如果引号为' ,则无需在属性中进行转义:

<?xml version="1.0"?>
<valid attribute='"'/>

评论

不得在评论中转义所有 5 个特殊字符:

<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>

CDATA

不得CDATA部分中转义所有 5 个特殊字符:

<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>

处理说明

不得在 XML 处理指令中转义所有 5 个特殊字符:

<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>

XML 与 HTML

HTML 有自己的一组转义码 ,涵盖了更多的字符。

也许这会有所帮助:

XML 和 HTML 字符实体引用列表

在 SGML,HTML 和 XML 文档中,称为字符数据和属性值的逻辑结构由字符序列组成,其中每个字符可以直接显示(表示自身),或者可以由称为字符引用的一系列字符表示,其中有两种类型:数字字符引用和字符实体引用。本文列出了在 HTML 和 XML 文档中有效的字符实体引用。

该文章列出了以下五个预定义的 XML 实体:

quot  "
amp   &
apos  '
lt    <
gt    >

根据万维网联盟(w3C) 的规范 ,除了用作标记分隔符或用于注释,处理指令或 CDATA 部分之外, 有 5 个字符在 XML 文档中不得以其字面形式出现。 。在所有其他情况下,必须使用相应的实体或根据下表的数字引用替换这些字符:

原始字符 XML 实体替换 XML 数字替换
< &lt; &#60;
> &gt; &#62;
#34;
&&安培; &#38;
' ' &#39;

注意,上述实体也可以在 HTML 中使用,除了' ,这是在 XHTML 1.0 中引入的,并未在 HTML 4 中声明。出于这个原因,为了确保复古兼容性, XHTML 规范建议使用&#39;代替。