我无法找到好的xQuery教程,基本上我要做的是从这个html节点中检索文本etc...
<div class="venue">
<div class="vitem">
<p style="padding: 6px 0pt 0pt;" class="label">ADDRESS:</p>
<p class="item-big">blabla</p>
</div><br class="clear">
<div class="vitem">
<p style="padding: 6px 0pt 0pt;" class="label">PHONE:</p>
<p class="item-big">123</p>
</div><br class="clear">
<div class="vitem">
<p style="padding: 6px 0pt 0pt;" class="label">WEB:</p>
<p class="item-big">etc...</p>
</div><br class="clear">
</div>
我想知道如何从第三个 div[@class="vitem"]
中的第二个p中获取数据
或者p 直接关注 包含<{em> 文本p[@class="label"]
WEB:
编辑:Answeres已经提供了很多帮助,但我的第二个问题是布局是否会改变为这样的
<div class="venue">
<div class="vitem">
<p style="padding: 6px 0pt 0pt;" class="label">ADDRESS:</p>
<p class="item-big">blabla</p>
</div><br class="clear">
<div class="vitem">
<p style="padding: 6px 0pt 0pt;" class="label">WEB:</p>
<p class="item-big">etc...</p>
</div><br class="clear">
</div>
如何获得etc...
,只知道它跟随包含文本WEB:
的类标签的p?它不再是div [3] / p [2]
谢谢!
答案 0 :(得分:3)
我想知道怎么才能得到 第三个数据中的第二个数据 的div [@类= “VITEM”]
使用强>:
/*/div[@class='vitem'][3]/p[2]/text()
这意味着:获取具有值p
的属性div
的所有class
元素中的第三个的第二个"vitem"
子项的所有文本节点子节点是顶级元素的孩子。
或者直接跟随p p [@ class =“label”]与数据WEB:
使用强>:
/*/div[@class='vitem'][3]/p[@class='label']
/following-sibling::p[1]/text()
这意味着:获取p
元素的第一个后续兄弟p
的所有文本节点子元素,其中class
属性值为"label"
,这是一个孩子属性为div
且值为class
的所有"vitem"
元素中的三分之一,并且是顶级元素的子元素。
更新:OP已经添加了第二个问题:他只想选择p
作为字符串值的文本“etc ...”
使用强>:
/*/div/p[.='etc...']
答案 1 :(得分:1)
我想知道怎么才能得到 第三个中第二个p的数据
div[@class="vitem"]
或p 直接跟随<{em>p[@class="label"]
语义上相同的XPath / XQuery表达式是:
/div
/div[@class='vitem'][3]
/p[2]
或者
/div
/div[@class='vitem'][3]
/p[@class='label']
/following-sibling::p[1]