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

如果要提取第二个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表示第三个w:t元素。Xpath 索引从而1不是0. 并且list用于获取第一个元素,因为 Xpath 总是返回一个数组。

另请注意(//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 回答