选择 xQuery 中的第 n 个子元素/选择下一个元素

标签 select xquery

我很难找到好的 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/

相关文章:

jquery - 根据之前的选择禁用选项

java - 如何在 XmlDocument 中插入/替换 XML 标签?

xquery - 在我的数据库中插入大量 xml 文件后,marklogic 8 查询性能下降

if-statement - (XQuery/Conditions)是否可以在 if 语句中声明变量?

xml - Xquery dont "filter"第一个带有属性的标签

sql - 加入一对多并检索单个结果

mysql - SELECT * 和 SELECT ALL 之间有区别吗?

python - XQuery:将日期时间与毫秒进行比较

jquery - Application.js 放置 - Rails 3 和 jQuery

sql - 两表三列变一表四列