如何在php中对应firebug中的xpath

ThisFellow 2010-05-12 01:10:54
对于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...的方式好像也不成功。
大家都是怎么用的?
...全文
108 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ThisFellow 2010-05-13
  • 打赏
  • 举报
回复
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)的开发和部署的一系列技术组合。】
xuzuning 2010-05-13
  • 打赏
  • 举报
回复
路径 /html/body/div/div/div/div[3]/table/tbody/tr/td/ul/li[2]/a/span[2]
中 div[3] 是什么?
路径中的都是节点名,那个 div[3] 是节点名吗?可以吗?
至少 xpah 把 “[]”留作他用了
ThisFellow 2010-05-13
  • 打赏
  • 举报
回复
全路径检索 怎么做?
$wiki->body->div->div->div... 这样么?
xuzuning 2010-05-12
  • 打赏
  • 举报
回复
全路径检索,就不必用 xpath 了
XPath 的强项在于模糊搜索
ThisFellow 2010-05-12
  • 打赏
  • 举报
回复
自顶一下子。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧