2010-09-30 55 views
2

前一个问题,用户帮我,但我坚持做简单的要求:的XPath查询问题

<?php $nodes = $xPath->query('//table[@class="some_class"]'); 

但它返回我的整个表DATAS而不是表行,这就是为什么我想仅检索表格的“td”。

我tryed(但它不工作

<?php $nodes = $xPath->query('//table[@class="some_class"]/tbody/tr'); 

什么我做错了吗?

* 编辑HTML结构*

<table class="some_class"> 
<tbody><tr> 
<td class="firstcol" width="160">name</td> 
<td width="250">Some&nbsp;Data</td> 
</tr> 
+0

请发布您正在使用的HTML,以便我们了解确切的结构。 – Oded 2010-09-30 19:10:58

+0

没有输入样本,只能猜测......'// table [@ class =“some_class”] // td' – 2010-09-30 19:12:07

+0

请确保在class属性中只有some_class而不是some_class和some_other_class。否则你将不得不使用'contains'功能。 – Gordon 2010-09-30 19:13:07

回答

5
//table[@class='some_class']//td 

在那里增加了一个中间//,因为我对tbody的任何级别的不信任实际上在那里(虽然他们应该是DOM)。

+0

谢谢你的工作 – 2010-09-30 19:13:38

1

假设路径正确匹配,你可能只需要追加/ *匹配所有子节点:

//table[@class="some_class"]/tbody/tr/*

+0

arg,无法正常工作,我更新了我的帖子并提供了更多信息。谢谢 – 2010-09-30 19:10:00

+0

@Tristan - “不工作”应该是一个红旗,上面写着“你怎么知道它不工作?分享这些信息。”例如。 $ xPath-> query()返回什么值? – LarsH 2010-09-30 19:14:03

+0

我怀疑_if_它不工作,这是因为OP使用类似firebug /另一个DOM HTML演示工具来查看HTML,它显示了一个'',但正在使用页面的源代码,其中 '不存在... – Wrikken 2010-09-30 19:18:37