doushi1960 2013-03-18 17:39
浏览 91
已采纳

简单的xpath查询,但没有结果

Trying to get all URLs values from xml.

I have hundreds of entry exactly in the form like e.g. this entry 16:

<?xml version="1.0" encoding="utf-8" ?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <entries>
   <entry id="16">
      <revision number="1" status="accepted" wordclass="v" nounclasses="" unverified="false"></revision>
      <media type="audio" url="http://website.com/file/65.mp3" />
      </entry>
   <entry id="17">
      ....
   </entry>
</entries>
</root>

I am using this code but cannot get it to work. Why?

$doc = new DOMDocument;

$doc->Load('data.xml');

$xpath = new DOMXPath($doc);

$query = '//root/entries/entry/media';

$entries = $xpath->query($query);

What is the correc query for that? Best would be to only get the url value.

  • 写回答

2条回答 默认 最新

  • doumao1917 2013-03-18 17:43
    关注

    Your query probably returns the proper elements, but by default gives you the content of the media tag ( which in your case are empty, since the tag is self-closing ).

    To get the url attribute of the tag you should use getAttribute(), example :

    $entries = $xpath->query('//root/entries/entry/media');
    foreach($entries as $entry) { 
      print $entry->getAttribute("url")."<br/>";
    }
    

    Or you should just xpath-query the attribute instead and read out it's value:

    $urlAttributes = $xpath->query('//root/entries/entry/media/@url');
                                                              #####
    foreach ($urlAttributes as $urlAttribute)
    { 
        echo $urlAttribute->value, "<br/>
    ";
                            #####
    }
    

    See DOMAttr::$valueDocs:

    value


    The value of the attribute

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64
  • ¥15 iOS 自定义输入法-第三方输入法
  • ¥15 很想要一个很好的答案或提示
  • ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
  • ¥15 怀疑手机被监控,请问怎么解决和防止
  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示