什么';这个XPath查询有问题


What's wrong with this XPath query?

我想从这个url制作标题列表:http://www.2dplay.com/action-games.htm

我的查询如下:

 $gamelist = $xpath->query('//div[@id="wrapper"]//div[@id="body_wrap"]//div[@id="content"]//
table[@id="cat_games"]//tbody//tr//td//h2//a');
    foreach($gamelist as $e){
        echo $e->nodeValue;
        echo "<br/>";
    }

它没有给出任何结果。如果我关闭表[@id="cat_games"]的查询,它会在一个节点中为每个txt提供信息。任何帮助都将不胜感激。

根据W3C XHTML 1.0 C.8部分,您必须知道元素的id属性必须是唯一的。XHTML 1.0是XML 1.0中HTML 4的重新表述,因此HTML4 7.5.2的定义也适用于此。

由于您正在解析的文档被声明为XHTML 1.0,因此您不需要提供所需元素的完整路径,因为table元素具有id属性。您可以直接解析此元素:

//table[@id="cat_games"]/tr/td/h2/a

如果你担心表的结构可能会改变(即:最终可能会添加<tbody>标签),你也可以进行一个更通用的查询:

//table[@id="cat_games"]//h2/a