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><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 的事实)并且:

  1. 你用来验证这是错误的
  2. 您看到的东西与您认为的不同

我肯定会尝试使用其他工具/浏览器/任何工具来验证这一点。此外,您可能希望保存发送到浏览器的 XML 文件,并使用 XMLStarlet 检查它。 (命令行 XML 工具包)。

我也想知道这是否是一个我们不容易发现的问题 - 字符编码问题或字节顺序标记问题(与编码相关)。您发送的网页的字符编码是否与 XML (UTF-8) 的编码匹配/不同。

关于php - XML 格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1959571/

相关文章:

c# - XmlReader - 我需要编辑一个元素并生成一个新元素

javascript - 使用 Jquery/Javascript 访问嵌入在 XML 中的 JSON

java - 如何将在java上创建的新textview与其在android studio中的xml特征链接起来?

java - JAXB 多行属性

使用 PHP 插入的 JavaScript 值返回错误

php - 无法在 Laravel 模型中使用 PHP Trait

PHP5.3 : "Call to undefined method" error when calling invoke from class variable

java - 工具栏中的这两个图标(抽屉布局和菜单图标)是黑色的,如何将其变成白色?

php - 即使 strlen 在可接受的范围内,此正则表达式也会截断字符串中的最后一个单词

php - 在 OS X 上的 PHP 5 上安装 OAuth PECL 包