以下是我的HTML格式:
<div class="menu">
<h3 class="menu_item_title">Title of first category</h3>
<div class="menu_item">Item 1</div>
<div class="menu_item">Item 2</div>
<div class="menu_item">Item 3</div>
<h3 class="menu_item_title">Title of second category</h3>
<div class="menu_item">Item 4</div>
<div class="menu_item">Item 5</div>
<div class="menu_item">Item 6</div>
<div class="menu_item">Item 7</div>
<div class="menu_item">Item 8</div>
<div class="menu_item">Item 9</div>
</div>
我想为每个“menu_item”提供前面元素的H3“menu_item_title”。 所以对于前3个元素,我想找到剩下的“第一类标题”,我想要“第二类标题”。
在这个例子中,我只有两个类别,但实际上还有更多。
我尝试过这样的事情:
//div[contains(concat(" ", normalize-space(@class), " "), " menu_item ")]/preceding::h3[contains(concat(" ", normalize-space(@class), " "), " menu_items_title ")]
但它没有成功。
有人可以给我一些魔法吗?)?
答案 0 :(得分:0)
&#34;我希望有一个输出3次的查询:第一类标题和6次:第二类标题&#34;
这不能只在纯XPath 1.0中完成,你需要一些PHP才能完成这项任务。一种可能的方法是执行首先返回div
元素的XPath:
//div[contains(concat(" ", normalize-space(@class), " "), " menu_item ")]
...然后遍历结果并在每个div
上执行以下相对XPath以获取相应的h3
元素:
./preceding-sibling::h3[contains(concat(" ", normalize-space(@class), " "), " menu_item_title ")][1]