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 に答える