未定义的XML实体和CDATA

时间:2012-12-19 13:14:44

标签: xml parsing

我的XML向我显示了一个关于未定义实体的错误,因为我的数据显示了特殊的字符,如& eacute;和类似的...我该如何解决?

<track href="file.mp3" title="<?php echo $title;?> <?php echo $artist;?>" target="http://www.site.com" rel="hdefault.jpg">
  <meta>
    <![CDATA[ <a href="http://www.site.com/search" target="_blank">More info</a> ]]>
  </meta>
</track>

我知道我必须使用CDATA,但如果我尝试:

title="<![CDATA[ <?php echo $title;?> ]]>"
它告诉我:

第19行第7行的

错误:未转义''&lt;'属性值中不允许

1 个答案:

答案 0 :(得分:3)

&eacute;在XML中没有任何意义,除非有一个DTD描述了什么字符“eacute”是 XML解析器是一个DTD解析器(这是一个很大的if)。

如果要在XML文档中可靠地表示é,则需要:

  • 使用文字é
  • 使用数字字符引用

如果要在HTML文档中嵌入HTML,则必须使用:

  • 元素内容周围的CDATA标记(属性)。 (正如您对元素的值所做的那样)
  • HTML中特殊字符的字符引用。 &代表&amp;,因此如果您想在XML文档中表示HTML &eacute;,则需要&amp;eacute;

title属性可能是“标题”而不是“标题的HTML表示”,所以使用文字é可能是你最好的选择。

不幸的是,您的原始数据中似乎没有HTML而不是文本,因此您可能必须先清理传入的数据才能使用它。

相关问题