XML实体未在Chrome中定义

时间:2012-05-30 20:56:32

标签: php xml

我的浏览器告诉我:

error on line 2 at column 308899: Entity 'ntilde' not defined

,特定行在我的xml中:

<LastName>Trevi&ntilde;o</LastName>

该名称最初为Treviño,但它是通过php htmlentities函数修改的。

我能做些什么来让php和xml很好地玩?


在Mac上使用Chrome 19

5 个答案:

答案 0 :(得分:4)

显然使用htmlspecialcharshtmlentities可以解决问题。

htmlspecialchars(htmlentities($value));

答案 1 :(得分:1)

您实际上是在生成XML还是HTML?他们不是一回事。 HTML定义了一堆实体(IIRC),而XML很少有内置的&#34; - 只有一些像&amp;&lt;

为什么在直接使用文本时都使用实体?只需确保您对所使用的编码保持一致(UTF-8将是一个不错的选择)。

答案 2 :(得分:0)

您不需要在XML中编码波形符。它会抛出错误。在这种情况下,最好的办法可能是将文本包装在CDATA中。

<LastName><![CDATA[Trevi&ntilde;o]]></LastName>

答案 3 :(得分:0)

尝试指定htmlentities的编码

htmlentities($string,ENT_QUOTES,'UTF-8');

答案 4 :(得分:0)

应该是:Treviño。 您的 DTD 文件中可能缺少实体? 像这样:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Customer
[
<!ENTITY ntilde "&#241;">
]>

<Customer>
<LastName>Trevi&ntilde;o</LastName>
</Customer>