我看到的每个地方,帖子告诉我用他们的html实体来逃避xml特殊字符,但我仍然得到XML解析错误。我收到的错误信息是“未识别的实体”,它出现在& amp; amp; amp; amp; amp; amp;和& reg;标记(没有空格)。我该如何解决这个问题?为什么这仍然会引发错误呢?
<?xml version="1.0" encoding="UTF-8"?>
<maps>
<location id="tx">
<item label="Lobby & Entrance" xpos="125" ypos="112" />
<item label="Restaurant & Bar" xpos="186" ypos="59" />
<item label="Swimming Pool" xpos="183" ypos="189" />
<item label="Nautilus Gym®" xpos="154" ypos="120" />
</location>
</maps>
答案 0 :(得分:12)
替换:
®
:®
和
&
:&
并且您的XML有效
答案 1 :(得分:6)
XML只有少量“内置”字符实体名称。 “amp”是内置插件之一,所以你似乎不太可能在那里遇到错误。但是,“reg”不是内置的。
要解决此问题,您可以在reg的位置使用数字引用,使用实际字符,或者为reg包含实体声明,如下所示:
<!ENTITY reg "®">
您可以查看XHTML DTDs以获取HTML实体的完整实体声明集。
答案 2 :(得分:1)
XML仅定义实体&
,<
和>
。除非您以某种方式声明,否则®
无效。
答案 3 :(得分:1)
我看到的任何地方,帖子告诉我用他们的html实体来逃避xml特殊字符
别。使用XML实体。
我收到的错误消息是“未识别的实体”,它出现在
&
和®
标记处。
您不应该遇到&
的问题,因为这是XML的一部分。您必须使用破碎的解析器。很难说,因为你没有提供任何用来解析它的代码。
®
不应由XML解析器解析,除非您包含定义它的DTD。使用数字实体或(更好)真实字符和合适的(UTF-8)字符编码。