如何处理XML属性“NAME”值中的非法字符

时间:2011-04-28 19:19:45

标签: xml

假设我有一段类似于以下内容的XML:

<row Johnson&amp;Johnson="good" M&amp;Ms ="bad" /> --self closing tag

<row Johnson&amp;Johnson="good" M&amp;Ms ="bad" </row>

我逃脱了&amp;属性名称中的字符值,但它似乎仍然是非法的。您是否可以使用转义的非法字符来归因NAME值?如果是这样的话?提前致谢。

2 个答案:

答案 0 :(得分:2)

不,你不能以任何形式的名字使用&符号。因此,您根本就没有XML。你刚刚得到了一些不等于格式良好的XML文本。

考虑使用更像以下内容的替代方法:

<products>
    <product name="Johnson&amp;Johnson" quality="good"/>
    <product name="M&amp;Ms" quality="bad" />
</products>

答案 1 :(得分:2)

XML名称中不允许使用

&,0x26:

Section 2.3, "Common Syntactic constructs"

[4]NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
[4a]NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]