dongrenzheng1619 2012-05-15 18:22
浏览 37

从Xpath查询中选择单个节点

I'm using this code to extract all required nodes from 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 />";
    }

I'm getting a long list of entries, but I need possibility to choose any of them seperately. tried to use echo "Found $item[2]<br />"; but got error:

Warning: main() [function.main]: Cannot add element t number 1 when only 0 such elements existthanks for advices

  • 写回答

2条回答 默认 最新

  • douqi2571 2012-05-15 18:35
    关注

    If you want to extract the 2nd w:t element use the index in xpath instead.

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

    Note 3 means 3rd w:t element. Xpath Index starts from 1 instead of 0. And list is used to fetch the first element as Xpath always returns an array.

    Also note this XPath can be reduced to (//w:r/w:t)[3]unless same tree is available somewhere else. So it looks like

    $item = list($xml->xpath('(//w:r/w:t)[3]'));
    
    评论

报告相同问题?

悬赏问题

  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器