【发布时间】:2011-01-16 17:16:51
【问题描述】:
我需要将来自外部源的 XML 文档加载到 PHP 中。 XML 未声明其编码并包含非法字符,例如&。如果我尝试直接在浏览器中加载 XML 文档,我会收到诸如“在文本内容中发现无效字符”之类的错误,在 PHP 中加载文件时也会收到很多警告,例如:xmlParseEntityRef: no name in Entity 和 Input is not proper UTF-8, indicate encoding ! Bytes: 0x9C 0x31 0x21 0x3C。
很明显,XML 格式不正确,并且包含应转换为 XML 实体的非法字符。
这是因为 XML 提要由许多其他用户提供的数据组成,显然在我得到它之前它没有经过验证或重新格式化。
我已经与 XML 提要的供应商进行了交谈,他们说他们正试图让内容提供商对其进行整理,但这似乎很愚蠢,因为他们应该首先验证输入。
我基本上需要修复 XML,纠正任何编码错误并将任何非法字符转换为 XML 实体,以便在使用 PHP 的 DOMDocument 函数时出现 XML 加载问题。
我的代码目前看起来像:
$feedURL = '3704017_14022010_050004.xml';
$dom = new DOMDocument();
$dom->load($feedURL);
显示编码问题的示例 XML 文件(点击下载):feed.xml
包含尚未转换为 XML 实体的字符的示例 XML:
<?xml version="1.0"?>
<feed>
<RECORD>
<ID>117387</ID>
<ADVERTISERNAME>Test</ADVERTISERNAME>
<AID>10544740</AID>
<NAME>This & This</NAME>
<DESCRIPTION>For one day only this is > than this.</DESCRIPTION>
</RECORD>
</feed>
【问题讨论】:
-
“所有其他满意的客户(?)如何处理数据以及为什么我是唯一一个悲惨的人” - 这是我要问供应商的问题。你能提供一个(确切的)示例文档吗?
-
我自己也想知道。我与他们交谈过,他们告诉我他们遇到了数据质量问题,并告诉内容提供商对其进行整理。我假设其他客户在尝试处理 XML 提要之前已经找到了修复 XML 提要的方法。因此我的问题。
-
@VolkerK 我已将整个 XML 文档的一个子集作为完整的 XML 上传,超过 42,000 行。
标签: php xml domdocument