对于firebug中取到的这样的xpath: //*[@id="firstHeading"]
在php中可以直接通过 
$title = $wiki->query('//*[@id="firstHeading"]');
echo $title->item(0)->textContent;
来取得。但是对于下面这种xpath却怎么都实验不成功。
/html/body/div/div/div/div[3]/table/tbody/tr/td/ul/li[2]/a/span[2]如果用simplexml_load_file的方式,那么采用$wiki->body->div->div->div...的方式好像也不成功。
大家都是怎么用的?

解决方案 »

  1.   

    全路径检索,就不必用 xpath 了
    XPath 的强项在于模糊搜索
      

  2.   

    全路径检索 怎么做?
    $wiki->body->div->div->div... 这样么?
      

  3.   

    路径 /html/body/div/div/div/div[3]/table/tbody/tr/td/ul/li[2]/a/span[2]
    中 div[3] 是什么?
    路径中的都是节点名,那个 div[3] 是节点名吗?可以吗?
    至少 xpah 把 “[]”留作他用了
      

  4.   

    function parse($url){
    try{
    $dom = new DOMDocument();  
    $dom->load($url);  
    $wiki = new DOMXPath($dom); 
    }catch(Exception $e){}

    $title = $wiki->query('//*[@id="firstHeading"]');
    echo $title->item(0)->textContent;
    $desc = $wiki->query('//*[@id="siteSub"]');
    echo $desc->item(0)->textContent;
    以上都是成功的,但是如何取得下面的xpath的内容呢?
    /html/body/div/div[position()=1]/div/div[position()=3]/p[position()=1]
    就是http://zh.wikipedia.org/zh/Flex 里面的这句【Adobe Flex是最初由Macromedia公司在2004年3月发布的,基于其专有的Macromedia Flash平台,它是涵盖了支持RIA(Rich Internet Applications)的开发和部署的一系列技术组合。】