2011-01-22 11 views
2

私はサーバーへのリクエストに基づいてXMLレスポンスを受信して​​います。実際にprint_r()を使用して画面にダンプできる有効な結果セットを返します。 Resultセットには、次のようになります(編集:これは、ファイルの正確な構造です):単純なXMLノードのインデックスによるアクセスprob!em

$xml = simplexml_load_string($xmlRequest); 
$records = $xml->recordset->record; 

私は、foreachループで$レコード配列なしで歩くことができます。私はラインを使用する場合

<root> 
    <main_node1> 
     <value1>one</value1> 
     <value2>two</value2> 
    </main_node1> 
    <main_node2> 
     <anothervalue>whatever</anothervalue> 
    </main_node2> 
    <recordset> 
     <record> 
      <value1>one</value1> 
      <value2>two</value2> 
     </reocrd> 
     <record> 
      <value1>one</value1> 
      <value2>two</value2> 
     </reocrd> 
     <record> 
      <value1>one</value1> 
      <value2>two</value2> 
     </reocrd> 
    </recordset> 
</root> 

ただし、レコード内の特定のレコードにアクセスしようとすると問題が発生するなど

のインデックスを使用して
$record = $xml->recordset->record[$index]; 

私はNULL valeuを取得しています。私はまた、これまでのところ成功していない結果を(配列)にキャストしようとしました。

私がsimpleXMLに関して見たすべてのドキュメントでは、XMLノードにインデックスでアクセスすることができますが、誰かが私がここで間違っているかもしれないことを教えてくれますか?

編集:レコードセットはドキュメントのルートではありませんが、$ xml-> recordset->レコード表記を使用して、$ records変数にレコードのリストをロードし、foreachループ。

+1

あなたが失敗した完全な例を挙げてもらえますか? (XMLと使用するコード、または例のためにそれに似たコード) –

答えて

1

を私は

$records = $xml->xpath('//record'); 

表記法を使用して、私の問題を解決し、私は今、自分のインデックスですべてのレコードにアクセスすることができています。

お試しいただきありがとうございます、私はあなたの努力に感謝します。 XPathを使用せずに、それを行うに

0

「レコードセット」ノードが$ xml変数のルートであるため、何も戻ってきません。

これは動作するはずです:?

<?php 
    //Example xml, replace this with $xml = simplexml_load_string($xmlRequest); 
    $xml = simplexml_load_string('<?xml version="1.0"?> 
    <recordset><record><value1>one</value1><value2>two</value2></record> 
    <record><value1>one</value1><value2>two</value2></record> 
    </recordset>'); 

    $record = $xml->record[0]; 
    print_r ($record); 

>

0

もう一つの方法は次のとおりです。

ベースとしてこれを使用する:

$record = $xml->recordset->record[$index]; 

あなたはちょうどそれが動作しない受信何らかの理由で、intとしてインデックスを作るようになりました。だから、:

$index = trim($_GET['index']); 
$index = intval($index); 

さて、これは動作します:

$record = $xml->recordset->record[$index]; 

よろしく、 RaphaelDDL

関連する問題