我有一个将 xml 数据写入文件的 php 脚本和另一个将此文件的内容作为响应发送到客户端的脚本。 但是在客户端,我收到以下错误: XML 解析错误:格式不正确 当我查看页面的源代码时,我看到的 XML 如下:
<?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>
在 file1.php 中,我有以下代码将 XML 写入文件:
$file= fopen("book_results.xml", "w");
$xml_writer = new XMLWriter();
$xml_writer->openMemory();
$xml_writer->startDocument('1.0', 'UTF-8', 'yes');
$xml_writer->startElement('books');
$xml_writer->writeElement('date',get_current_date()); // Like December 23rd, 2009
$xml_writer->writeElement('total',$totalResults);
foreach($bookList as $key => $value) { /* $bookList contains key value pairs */
$xml_writer->startElement('book');
$xml_writer->writeElement('name',$key);
$xml_writer->writeElement('url',$value);
$xml_writer->endElement(); //book
}
$xml_writer->endElement(); //books
$xml_data = $xml_writer->outputMemory();
fwrite($file,$xml_data);
fclose($file);
在 index.php 中,我有以下代码来发送文件的内容作为响应
<?php
//Send the xml file contents as response
header('Content-type: text/xml');
readfile('book_results.xml');
?>
可能导致错误的原因是什么?
请帮忙。 谢谢。
最佳答案
以上内容对我来说很好(包括您通过专用组件形成 XML 的事实)并且:
- 你用来验证这是错误的
- 您看到的东西与您认为的不同
我肯定会尝试使用其他工具/浏览器/任何工具来验证这一点。此外,您可能希望保存发送到浏览器的 XML 文件,并使用 XMLStarlet 检查它。 (命令行 XML 工具包)。
我也想知道这是否是一个我们不容易发现的问题 - 字符编码问题或字节顺序标记问题(与编码相关)。您发送的网页的字符编码是否与 XML (UTF-8) 的编码匹配/不同。
关于php - XML 格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1959571/