php - CData section not finished 问题

标签 php xml dom parsing domdocument

当我对下面的 XML 使用 DOMDocument::loadXML() 时,出现错误:

Warning: DOMDocument::loadXML() [domdocument.loadxml]: CData section not finished http://www.site.org/displayimage.php?album=se in Entity,
Warning: DOMDocument::loadXML() [domdocument.loadxml]: Premature end of data in tag image line 7 in Entity
Warning: DOMDocument::loadXML() [domdocument.loadxml]: Premature end of data in tag quizz line 3 in Entity
Warning: DOMDocument::loadXML() [domdocument.loadxml]: Premature end of data in tag quizzes line 2 in Entity
Fatal error: Call to a member function getElementsByTagName() on a non-object 

在我看来,我的 CData 部分已关闭,但我仍然收到此错误。 XML 看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<quizzes>
<quizz>
<title><![CDATA[Title]]></title>
<descr><![CDATA[Some text here!]]></descr>
<tags><![CDATA[one tag, second tag]]></tags>
<image><![CDATA[http://www.site.org/displayimage.php?album=search&cat=0&pos=1]]></image>
<results>
<result>
<title><![CDATA[Something]]></title>
<descr><![CDATA[Some text here]]></descr>
<image><![CDATA[http://www.site.org/displayimage.php?album=search&cat=0&pos=17]]></image>
<id>1</id>
</result>
</results>
</quizz>
</quizzes>

你能帮我找出问题所在吗?

最佳答案

我发现隐藏的 XML 字符通常会有问题,所以我更喜欢像 beloved 一样转义无效字符:

<?php
//$feedXml is the fetched XML content
$invalid_characters = '/[^\x9\xa\x20-\xD7FF\xE000-\xFFFD]/';
$feedXml = preg_replace($invalid_characters, '', $feedXml );

关于php - CData section not finished 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2798108/

相关文章:

php - 将 PHP 更新为 mysql

php - 为单个文件设置语法突出显示

php - 如何使用 php pdo 从 mysql 中具有外键约束的数据库中删除数据

JavaScript/JQuery 垃圾收集和事件

javascript - React.js 如何使用虚拟 DOM 加速渲染

php - 将一个表中的第一个值插入另一个表 Mysql PHP

java - jaxb 是否有可能在基于 xsd 的验证过程中显示更多错误

c - XML 文件的拆分

xml - 使用 Powershell 编辑子文件夹中的 zip 文件内容

javascript - 为什么只能用点号来引用表格?