2016-05-23 10 views
0

私は.xmlファイルを持っています(7000行以上のオリジナルですが、テストのために私は3行しか使っていませんでした。 t)からデータを抽出します。しかし、自動的に生成されたものであること、それがひどくかなりありませんが、観察:PHPを使用して(巨大な)xmlファイルからデータを抽出

<ROW MODID="182" RECORDID="561"> 
<COL> 
<DATA> 
</DATA> 
</COL> 
<COL> 
<DATA> 
6 quai St Pierre</DATA> 
</COL> 
<COL> 
<DATA> 
</DATA> 
</COL> 
<COL> 
<DATA> 
Monsieur</DATA> 
</COL> 
<COL> 

などなど...私はすでに、私はXacobeo上で実行する必要が要求を考案したが、私は取得するように見えることはできません それはPHPで動作するように。私は、バリエーションの多数、という最後の1を試した次

$xmldoc = new DOMDocument(); 
$xmldoc->load('hellashort.xml'); 
$xpathvar = new Domxpath($xmldoc); 
$queryResult = $xpathvar->query('//COL'); 
foreach($queryResult as $result){ 
    echo $result->textContent; 
} 

は、私はより多くの美的ファイルでこのコードを試してみました、それが動作しますので、どのように私はそれがこのファイルで作業を得ることができますか? すべての提案が高く評価されました。 おかげ

UPDATE は、私はエラーの短いファイルをチェックし、1が動作するように私は、要素を閉じていなかった実現、しかし、長いファイルは、オンラインチェッカーに応じてエラーが含まれていないが、まだ動作しません。 。

UPDATE 2 長いファイルが現在のリクエスト/のために動作しますが、それらはより複雑になり次第、何も返さない、すなわち:Xacobeoで正しい結果を返す//ROW/COL[position()=39]/DATA.xmlファイルを大きすぎてこのように扱うことはできますか?

$file=file_get_contents("go.xml"); 
$xml=simplexml_load_string($file); 
$elements=$xml->path('//ROW/COL[position()=1]/DATA'); 

それはSimpleXMLを呼ばれていますなぜ私が見る、すべてに感謝を:だから私は近づいを変更し、それをこのようにやってしまったFIXED -

UPDATE 3(このファイルにはおよそ11.2のMoです)助けてください

+1

オンラインツールを使用してXMLを検証し、エラーの内容や発生状況を共有することをお勧めします。 – Netham

+0

エラーは表示されず(画面またはログに表示されます)、結果は表示されません...私は死の白い画面が表示されていないことを確認するために、機能の前後にいくつかのランダムなフレーズをエコーし​​、彼らはどちらもうまく表示されます。 –

答えて

0

まず、使用可能なすべてのエラーを表示するようにサーバーが設定されていることを確認してください。 別名として、このスニペットをスクリプトの冒頭に配置します。

ini_set('display_startup_errors',1); 
ini_set('display_errors',1); 
error_reporting(E_ALL | E_STRICT); 

エラーメッセージを共有できますか。

+0

ブラウザまたはApacheエラーログにエラーが表示されません...配列の 'print_r'が私に' DOMNodeList Object() 'を与えます –

0

、あなたの文書は、正確に1つのルート要素を持っていることを確認し、すべての<ROW>の要素を格納するための要素、すなわち:

<DOCUMENT> 
<ROW MODID="182" RECORDID="561"> 
<COL> 
<DATA> 
</DATA> 
</COL> 
<COL> 
<DATA> 
6 quai St Pierre</DATA> 
</COL> 
<COL> 
<DATA> 
<!-- ... --> 
</DOCUMENT> 

ルートなしで複数の行を持っている場合、それはよくformetのXMLファイルではありませんし、それ

<ROW MODID="182" RECORDID="561"> 
<COL> 
<DATA> 
</DATA> 
</COL> 
<COL> 
<!-- ... --> 
</ROW> 
<ROW MODID="183" RECORDID="562"> 
<!-- ... --> 
</ROW> 
+0

ファイル全体が' '要素に含まれていることを確認しました..それはちょうど ''/''のときにクエリが動作するので、正しく読み込まれていると確信しています –

関連する問題