我很难找到好的 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>
我想知道如何从第三个中的第二个p中获取数据div[@class="vitem"]
或者直接跟在p[@class="label"]
之后的p包含文本WEB:
编辑:答案已经有很大帮助,但是我的第二个问题是布局是否更改为这样
<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...
,只知道它跟在 p 后面,类标签包含文本 WEB:
?它不再位于 div[3]/p[2]
谢谢!
最佳答案
I'd like to know how can I get the data out of the 2nd p in the third div[@class="vitem"]
使用:
/*/div[@class='vitem'][3]/p[2]/text()
这意味着:获取第二个 p
的所有文本节点子节点第三个 child div
具有属性 class
的元素值(value)"vitem"
它们是顶部元素的子元素。
Or the p directly following the p[@class="label"] with the data WEB:
使用:
/*/div[@class='vitem'][3]/p[@class='label']
/following-sibling::p[1]/text()
这意味着:获取第一个后续兄弟节点 p
的所有文本节点子节点任何p
元素为 class
值为 "label"
的属性,这是第三个 div
的 child 具有属性 class
的元素值(value)"vitem"
它们是顶部元素的子元素。
更新:OP 添加了第二个问题:他只想选择 p
其字符串值是文本“etc...”
使用:
/*/div/p[.='etc...']
关于选择 xQuery 中的第 n 个子元素/选择下一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4468461/