Heim >Backend-Entwicklung >PHP-Tutorial >浏览器输出xml文件 错误error on line 4 at column 56: EntityRef: expecting ';'详解

浏览器输出xml文件 错误error on line 4 at column 56: EntityRef: expecting ';'详解

WBOY
WBOYOriginal
2016-06-20 13:03:342964Durchsuche

PHP写的一个API,输出XML格式的东西。

现在直接显示在浏览器里报这个错误:

error on line 4 at column 56: EntityRef: expecting ';'
查看页面的源代码,这一行是:
http://www.xxx.cn/index.php?id=5383&utm_source=57tuan

这是怎么回事?该咋解决?

答案:

&符号,改成&,或者直接用cdata区()

Firefox浏览器、谷歌Chrome浏览器以及大多数浏览器在显示xml文件时,显示的并不是文件源码,而是经过“xml解析器”解析后的结果。但是,“xml解析器”在遇到字符“&”时,会把“&”当做一个实体引用的开始,而去寻找这个实体引用的结束符号“;”,本文上面遇到的就是这个问题。
在xml文档中,像“&”这样的预定义的实体引用一共有5个,分别是“&”、“”、“'”、“"”。

解决方法一:
把实体引用编码后使用,即
把“&” 编码为 “&” 
把“把“>” 编码为 “>” 
把“'” 编码为 “'” 
把“"” 编码为 “"” 

解决方法二:
在标记CDATA中,所有的标记、实体引用都被忽略,而被“xml解析器”一视同仁地当做原始字符数据看待,CDATA的形式如下:

使用CDATA需要注意的两点,

一:由于CDATA的结束符号是“]]>”,所以CDATA中不能包含“]]>”,

二:由于CDATA中的所有标记、实体引用都被忽略,所以CDATA不能嵌套使用。


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP下载图片函数Nächster Artikel:PHP删除文件夹内及其文件