XML验证错误:EntityRef:期待&#39 ;;'

时间:2014-05-02 06:45:11

标签: xml validation xml-validation

<url>
  <loc>http://www.ezed.in/ezed/courseDemoIntroPage.do?courseId=COU10000000138003530&checkingCourseFrom=preLogin#.U2DcKvmSySo</loc>
</url>
第102行第102行的

错误:EntityRef:期待';'

无法弄清楚可能出现的问题。

4 个答案:

答案 0 :(得分:75)

您的网址必须转义。

&amp; 字符在XML中用于插入带有语法&name;字符引用(注意名称后的; )。解析器期望; 但它找不到它(有更多可用的分隔符,这只是最常见的情况)。

解决方案然后转义(它是如何完成取决于您用来生成该XML文件的语言),但最终结果必须是这样的:

<url>
  <loc>http://www.ezed.in/ezed/courseDemoIntroPage.do?courseId=COU10000000138003530&amp;checkingCourseFrom=preLogin#.U2DcKvmSySo</loc>
</url>

请注意,普通&已被其转义版本&amp;取代。有关详细信息,请参阅this simple article

另一种可能的解决方案(如果你不想/你无法逃脱)是将URL包含在CDATA section内,如下所示:

<url>
  <loc><![CDATA[http://www.ezed.in/ezed/courseDemoIntroPage.do?courseId=COU10000000138003530&checkingCourseFrom=preLogin#.U2DcKvmSySo]]></loc>
</url>

答案 1 :(得分:4)

另一种方式如下:

而不是&#34; CDATA&#34;我们可以为url节点使用htmlspecialchars PHP本机函数。它会在xml输出中使用很少的xml提要,因此这对某人有用。

由于

答案 2 :(得分:1)

我今天偶然发现了同一个问题,如果您使用PHP构建链接,则可以使用以下功能:

htmlspecialchars();

它将为您格式化所需的字符串为HTML字符,以便您可以将其插入为<loc>

答案 3 :(得分:0)

只需将'&'替换为'&a m p;'没有空格,我把它放在这里!