我正在使用PHP和QueryPath库从一些旧的HTML文件中提取数据。当我需要的元素具有唯一的css3 ID或类时,提取很容易,但情况并非总是如此。我有一些文件包含以下类型的数据:
<div id="dataDiv">
<div class="1">Heading1</div><div class="2" title="">Data1</div>
<div class="1">Heading2</div><div class="2" title="">Data2</div>
</div>
我想使用QueryPath搜索包含某个文本字符串的类“1”的DIV(例如“Heading2”),然后直接在它旁边的类2的兄弟div中检索任何文本。 (在这种情况下,它将检索“Data2”)。
QueryPath中是否内置了一些功能,允许我根据它包含的文本导航到一个元素?如果是这样,一旦找到该元素,我怎样才能获得其下一个兄弟元素的内容文本?
答案 0 :(得分:1)
我的自然想法是not()
功能。一个例子:
$qp2 = qp($tb)->find('table tr')->not('table tr table tr');
答案 1 :(得分:0)
您可能只需使用QueryPath::get(n-1)
获取第n个对象,请检查this。但是,您可能希望go further...
答案 2 :(得分:0)
在CSS 3中使用兄弟运算符:
qp($html, 'div.1:contains("Heading1") + div.2')->text();
以上获取标题为<div class="1">
的{{1}},然后获取其类为Heading1
的相邻兄弟。