xml使用“&”,“®”进行解析,但仍然出现错误

时间:2011-10-16 21:49:43

标签: xml parsing special-characters

我看到的每个地方,帖子告诉我用他们的html实体来逃避xml特殊字符,但我仍然得到XML解析错误。我收到的错误信息是“未识别的实体”,它出现在& amp; amp; amp; amp; amp; amp;和& reg;标记(没有空格)。我该如何解决这个问题?为什么这仍然会引发错误呢?

<?xml version="1.0" encoding="UTF-8"?>
<maps>
    <location id="tx">
        <item label="Lobby &amp; Entrance" xpos="125" ypos="112" />
        <item label="Restaurant &amp; Bar" xpos="186" ypos="59" />
        <item label="Swimming Pool" xpos="183" ypos="189" />
        <item label="Nautilus Gym&reg;" xpos="154" ypos="120" />
    </location>
</maps>

4 个答案:

答案 0 :(得分:12)

替换: &reg;&#174;&amp;&#38;

并且您的XML有效

答案 1 :(得分:6)

XML只有少量“内置”字符实体名称。 “amp”是内置插件之一,所以你似乎不太可能在那里遇到错误。但是,“reg”不是内置的。

要解决此问题,您可以在reg的位置使用数字引用,使用实际字符,或者为reg包含实体声明,如下所示:

<!ENTITY reg "&#174;">

您可以查看XHTML DTDs以获取HTML实体的完整实体声明集。

答案 2 :(得分:1)

XML仅定义实体&amp;&lt;&gt;。除非您以某种方式声明,否则&reg;无效。

答案 3 :(得分:1)

  

我看到的任何地方,帖子告诉我用他们的html实体来逃避xml特殊字符

别。使用XML实体。

  

我收到的错误消息是“未识别的实体”,它出现在&amp;&reg;标记处。

您不应该遇到&amp;的问题,因为这是XML的一部分。您必须使用破碎的解析器。很难说,因为你没有提供任何用来解析它的代码。

另一方面,

&reg;不应由XML解析器解析,除非您包含定义它的DTD。使用数字实体或(更好)真实字符和合适的(UTF-8)字符编码。