Wel*_*bog 1303
如果您使用适当的类或库,他们将为您进行转义.许多XML问题都是由字符串连接引起的.
只有五个:
" "
' '
< <
> >
& &
Run Code Online (Sandbox Code Playgroud)
转义字符取决于特殊字符的使用位置.
可以在W3C标记验证服务中验证这些示例.
在安全的方式是逃避文本所有5个字符,然而,三个字符",'而>无需在文本转义:
<?xml version="1.0"?>
<valid>"'></valid>
Run Code Online (Sandbox Code Playgroud)
安全的方法是转义属性中的所有五个字符,但是,>字符不需要在属性中转义:
<?xml version="1.0"?>
<valid attribute=">"/>
Run Code Online (Sandbox Code Playgroud)
'如果引号为"以下内容,则无需在属性中转义该字符:
<?xml version="1.0"?>
<valid attribute="'"/>
Run Code Online (Sandbox Code Playgroud)
同样,"如果引号为':则不需要在属性中进行转义:
<?xml version="1.0"?>
<valid attribute='"'/>
Run Code Online (Sandbox Code Playgroud)
不得在评论中转义所有5个特殊字符:
<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>
Run Code Online (Sandbox Code Playgroud)
不得在CDATA部分中转义所有5个特殊字符:
<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>
Run Code Online (Sandbox Code Playgroud)
不得在XML处理指令中转义所有5个特殊字符:
<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>
Run Code Online (Sandbox Code Playgroud)
HTML有自己的一组转义码,涵盖了更多的字符.
And*_*are 90
也许这会有所帮助:
在SGML,HTML和XML文档中,称为字符数据和属性值的逻辑结构由字符序列组成,其中每个字符可以直接显示(表示自身),或者可以由称为字符引用的一系列字符表示,其中有两种类型:数字字符引用和字符实体引用.本文列出了在HTML和XML文档中有效的字符实体引用.
该文章列出了以下五个预定义的XML实体:
quot "
amp &
apos '
lt <
gt >
Run Code Online (Sandbox Code Playgroud)
Alb*_*lbz 71
根据万维网联盟(w3C)的规范,除了用作标记分隔符或用于注释,处理指令或CDATA部分之外,有5个字符在XML文档中不得以其字面形式出现..在所有其他情况下,必须使用相应的实体或根据下表的数字引用替换这些字符:
Original CharacterXML entity replacementXML numeric replacement
< < <
> > >
" " "
& & &
' ' '
注意,上述实体也可以在HTML中使用,除了' ,这是在XHTML 1.0中引入的,并未在HTML 4中声明.出于这个原因,为了确保复古兼容性,XHTML规范建议使用' 代替.
Pet*_*els 49
转义字符对于标记和属性是不同的.
对于标签:
< <
> > (only for compatibility, read below)
& &
Run Code Online (Sandbox Code Playgroud)
对于属性:
" "
' '
Run Code Online (Sandbox Code Playgroud)
http://www.w3.org/TR/2008/REC-xml-20081126/#syntax
&符号(&)和左尖括号(<)不得以其文字形式出现,除非用作标记分隔符,或用于注释,处理指令或CDATA部分.如果在其他地方需要它们,则必须分别使用数字字符引用或字符串"&"和"<"进行转义.右尖括号(>)可以使用字符串">"表示,并且为了兼容性,当它出现在字符串"]]>"内容中时,必须使用">"或字符引用进行转义,当该字符串未标记CDATA部分的结尾时.
为了允许属性值包含单引号和双引号,撇号或单引号字符(')可以表示为"'",而双引号字符(")表示为"".".
kjh*_*hes 27
一个旧的,常见问题的新的,简化的答案......
永远 (记住90%很重要)
属性值 (9%重要值得记住)
attr=" '单引号'在双引号内是可以的."attr=' "双引号"在单引号内是可以的.'"的"和'为'其他.Esoterica (记住0.1%重要)
]]>的]]>,除非]]>是结束CDATA节. Cha*_* ME 23
除了众所周知的五个字符[<,>,&,",']之外,我还会转义垂直制表符(0x0B).它是有效的UTF-8,但不是有效的XML 1.0,甚至还有很多库(包括libxml2)错过它并静默输出无效的XML.
摘自:http: //en.wikipedia.org/wiki/XML#Escaping
有五个预定义的实体:
< represents "<"
> represents ">"
& represents "&"
' represents '
" represents "
Run Code Online (Sandbox Code Playgroud)
"所有允许的Unicode字符都可以用数字字符引用表示."例如:
中
Run Code Online (Sandbox Code Playgroud)
大多数控制字符和其他unicode范围都被明确排除,这意味着(我认为)它们不会出现转义或直接:
http://en.wikipedia.org/wiki/Valid_characters_in_XML
接受的答案不正确。最好的方法是使用转义 xml 的库。
正如另一个问题中提到的
“基本上,不允许使用控制字符和 Unicode 范围之外的字符。这也意味着禁止调用字符实体等。”
如果只转义这五个字符。您可能会遇到诸如发现无效的 XML 字符 (Unicode: 0xc)之类的问题