我正在使用此代码从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
感谢您提供建议
答案 0 :(得分: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
表示第3个w:t
元素。 Xpath索引从1
而不是0
开始。并且list
用于获取第一个元素,因为Xpath总是返回一个数组。
另请注意此XPath可以缩减为(//w:r/w:t)[3]
,除非在其他位置提供相同的树。所以它看起来像
$item = list($xml->xpath('(//w:r/w:t)[3]'));
答案 1 :(得分:2)
应该是echo "found $items[2]<br />";
而不是$item[2]