对于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...的方式好像也不成功。
大家都是怎么用的?
在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...的方式好像也不成功。
大家都是怎么用的?
XPath 的强项在于模糊搜索
$wiki->body->div->div->div... 这样么?
中 div[3] 是什么?
路径中的都是节点名,那个 div[3] 是节点名吗?可以吗?
至少 xpah 把 “[]”留作他用了
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)的开发和部署的一系列技术组合。】