0

私はこのコードを使用して、xmlから必要なすべてのノードを抽出しています:

$xml = simplexml_load_file('file.xml');

    echo "<strong>Using direct method...</strong><br />";
    $items = $xml->xpath('/w:document/w:body/w:tbl/w:tr/w:tc/w:p/w:r/w:t');
    foreach($items as $item) {
        echo "Found $item<br />";
    }

エントリの長いリストを取得していますが、それらのいずれかを個別に選択する可能性が必要です。使用しようとしまし echo "Found $item[2]<br />";たが、エラーが発生しました:

Warning: main() [function.main]: Cannot add element t number 1 when only 0 such elements existアドバイスありがとう

4

2 に答える 2

3

2番目の要素を抽出する場合はw:t、代わりにxpathのインデックスを使用してください。

$item = list($xml->xpath('(/w:document/w:body/w:tbl/w:tr/w:tc/w:p/w:r/w:t)[3]'));

3は3番目w:tの要素を意味します。Xpathインデックスは。1の代わりにから始まり0ます。Xpathlistは常に配列を返すため、最初の要素をフェッチするために使用されます。

また(//w:r/w:t)[3]、同じツリーが他の場所で利用可能でない限り、このXPathをに減らすことができることに注意してください。だからそれは

$item = list($xml->xpath('(//w:r/w:t)[3]'));
于 2012-05-15T18:35:33.803 に答える
2

代わりecho "found $items[2]<br />";$item[2]

于 2012-05-15T18:38:00.397 に答える