Php XML格式不正确错误
我有一个将xml数据写入文件的php脚本,还有一个将该文件的内容作为响应发送给客户端。 但是在客户端,我得到了以下错误: XML解析错误:格式不正确 当我查看页面的源代码时,我看到的XML如下所示:Php XML格式不正确错误,php,xml,Php,Xml,我有一个将xml数据写入文件的php脚本,还有一个将该文件的内容作为响应发送给客户端。 但是在客户端,我得到了以下错误: XML解析错误:格式不正确 当我查看页面的源代码时,我看到的XML如下所示: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <books><date>December 24th, 2009</date><total>2</total><
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<books><date>December 24th, 2009</date><total>2</total><book><name>Book 1</name><url>http://www.mydomain.com/posters/68370/img.jpg</url></book><book><name>Book 2</name><url>http://www.anotherdomain.com/posters/76198/img1.jpg</url></book></books>
在index.php中,我有以下代码将文件内容作为响应发送
<?php
//Send the xml file contents as response
header('Content-type: text/xml');
readfile('book_results.xml');
?>
是什么导致了错误
请帮忙。
谢谢。您是否尝试过使用这两个松散日期和总计标记作为属性
<books date="December 24th" total="2">
此外,xml可能非常敏感。确保使用适当的CDATA标记有一些免费网站和工具用于检查XML中的有效性 根据,当我将上面的XML粘贴到textarea时,它说“没有发现错误” 但是,表示“找不到元素‘books’的声明”
Jeff建议将
date
和total
更改为属性,这或许会有所帮助。这可能很容易尝试。以上内容对我来说很好(包括通过专用组件形成XML的事实),并且:
从XML的复制和粘贴中,我唯一能看到的是XML声明后面跟着CR/LF组合(0x0D0x0A)。这是特定于平台的(Windows),可能是客户端的问题;但是,您没有提到客户端是什么,因此我无法确定这是否是问题所在。确保您正在向文件写入UTF-8或7位ASCII编码(如果有,请使用文本编辑器或“file”命令进行测试),并且您的检查程序支持它。请记住,UTF-8可以在前三个字节(EF BB BF)中包含一个签名(有时称为字节顺序标记),如果有,有时会混淆一些工具,如果没有,则很少混淆。
使用单引号。您使用什么来查看xml客户端?艾美?FF?什么版本?在Firefox 3.5和IE 8中都会出现相同的错误。日期/总数是属性还是元素与XML格式是否正确无关。这是一个设计决策。-1甚至建议CDATA在这种情况下可能有用。CDATA的正确使用案例非常少,即使你对垃圾处理非常粗心,你也可以用一只手数一数。将book和total的子元素更改为attributes,但仍然会出现相同的错误:(.如上所述,date/total是属性还是元素与XML的格式是否正确无关。这是一个设计决策。感谢您的回复。如何检查im发送的网页的字符编码是否与XML的编码匹配/不同(UTF-8)?也许可以使用Firebug或LiveHttpHeaders检查Firefox中的HTTP头?+1以提及字节顺序标记。如果PHP和XML文件都包含它们,则可能会混淆XML解析器,因为BOM应该只出现在文件的开头
<books date="December 24th" total="2">