c语言 xml特殊字符转意,我需要在XML文档中转义哪些字符?

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

#1楼

除了常见的五个字符[,&,“,'],我还将转义垂直制表符(0x0B)。它是有效的UTF-8,但不是有效的XML 1.0,甚至许多库(包括libxml2)错过它,并以静默方式输出无效的XML。

#2楼

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

XML转义字符

只有五个:

" "

' '

< <

> >

& &

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

文本

安全的方法是对文本中的所有五个字符进行转义,但是,在文本中不必对三个字符" , '和> "进行转义:

"'>

属性

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

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

同样, "不用在属性中进行转义,如果行情是' :

评论

所有5个特殊字符均不得在注释中转义:

数据

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

&]]>

加工说明

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

?>

XML与HTML

HTML有其自己的转义码集,可覆盖更多字符。

#3楼

也许这会有所帮助:

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

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

quot "

amp &

apos '

lt <

gt >

#4楼

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

原始字符 XML实体替换 XML数字替换

< &lt; &#60;

> &gt; &#62;

“&QUOT;&#34;

&&安培; &#38;

' 者; &#39;

注意,上述实体也可以在HTML中使用,除了’。 ,它是随XHTML 1.0引入的,而未在HTML 4中声明。因此,为确保追溯兼容性, XHTML规范建议使用&#39;。 代替。

#5楼

标签和属性的转义字符不同。

对于标签:

< <

> > (only for compatibility, read below)

& &

对于属性:

" "

' '

除用于标记分隔符时,或在注释,处理指令或CDATA节中,“&”字符(&)和左尖括号()可以用字符串“&gt;”表示,并且为了兼容起见,在内容中出现在字符串“]]>”中时,必须使用“&gt;”或字符引用对其进行转义,当该字符串未标记CDATA节的结尾时。

为了允许属性值同时包含单引号和双引号,撇号或单引号字符(')可以表示为“’”,而双引号字符(”)可以表示为“’”。 ”。

你可能感兴趣的:(c语言,xml特殊字符转意)