1

我有一个脚本来解析产品的 XML 文件,但我似乎无法掌握解析它的窍门。我有代码:

$file = $shop_path.'datafeeds/MC-B01.xml';

$xml = simplexml_load_file($file, null, LIBXML_NOCDATA);
$items = $xml->Items;

for($i = 0; $i < 17000; $i++) {
    $name = $items[$i]->Product_Name;
    echo $name.'<br />';
}

但是我得到了各种奇怪的错误:

PHP Warning: in file C:/xampp/htdocs/trow/tools/rip.php on line 188: simplexml_load_file() [function.simplexml-load-file]: ./../datafeeds/MC-B01.xml:172439: parser error : CData section not finished
PHP Warning: in file C:/xampp/htdocs/trow/tools/rip.php on line 188: simplexml_load_file() [function.simplexml-load-file]: ons&#44; in or out of the water. Cleanup is a snap after the fun with Pipedream
PHP Warning: in file C:/xampp/htdocs/trow/tools/rip.php on line 188: simplexml_load_file() [function.simplexml-load-file]: ^
PHP Warning: in file C:/xampp/htdocs/trow/tools/rip.php on line 188: simplexml_load_file() [function.simplexml-load-file]: ./../datafeeds/MC-B01.xml:172439: parser error : PCDATA invalid Char value 3
PHP Warning: in file C:/xampp/htdocs/trow/tools/rip.php on line 188: simplexml_load_file() [function.simplexml-load-file]: ons&#44; in or out of the water. Cleanup is a snap after the fun with Pipedream 
PHP Warning: in file C:/xampp/htdocs/trow/tools/rip.php on line 188: simplexml_load_file() [function.simplexml-load-file]: ^
PHP Warning: in file C:/xampp/htdocs/trow/tools/rip.php on line 188: simplexml_load_file() [function.simplexml-load-file]: ./../datafeeds/MC-B01.xml:172439: parser error : Sequence ']]>' not allowed in content

奇怪的是,包含错误显示文本的 CData 块似乎是正确格式的块。(我不能在这里发布,因为它是成人性质的。)

有什么建议么?

4

2 回答 2

2

CDATA 并不意味着您可以输入任何内容,这意味着可能会与标记符号混淆的内容可以被解析器忽略。因此,您在 CDATA 中的字符必须包含除 TAB、CR、LF 或特殊 FFFE、FFFF 字符之外的一些控制字符。删除它们,您将度过美好的一天!

于 2012-10-15T08:37:02.480 回答
0

您应该尝试将该文档保存为本地工作站上的 xml 文件,然后在 Internet Explorer 或 Firefox 浏览器(或可以解析和验证 XML 文档的工具)中打开该文件,以及遇到需要修复的任何错误。

对我来说,它看起来像是一些非标准字符,它通过介于两者之间的某个位置来保持您的 CDATA 部分不完整。

于 2012-05-17T06:18:15.163 回答