Xpath获取具有条件的元素

时间:2015-04-30 20:32:45

标签: html dom xpath

我有一些代码块,需要从中获取数据并尝试不同版本的xpath命令,但没有成功。

<div>
    <div class="some_class">
        <a title="id" href="some_href">
            <nobr>1<br>
        </a>
    </div>
    <div class="some_other_class">
        <a title="name" href="some_href">
            <nobr>John<br>
        </a>
    </div>
</div>

<div>
    <div class="some_class">
        <a title="id" href="some_href">
            <nobr>2<br>
        </a>
    </div>
    <div class="some_other_class">
        <a title="name" href="some_href">
            <nobr>John<br>
        </a>
    </div>
</div>

// and many blocks like this

因此,这个div块是相同的,除了它们的子元素的内容不同。我需要xpath查询来获取John的href <a title="id">等于1。

我尝试过这样的事情:

//div[./div/nobr='1' AND ./div/nobr='John']

只得到包含我需要的数据的div,然后就不会很难得到John的href。

另外,我设法用以下方式获得John的href:

//a[./nobr='John'][@title='name']/@href

但是这样它不依赖于<a title="id"...>元素的值,但它必须依赖它。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

认为你想要的是什么

//div/div[a/@title='id']/following-sibling::div[1]/a/@href

,如果输入文档格式正确,将返回(单个结果以--------分隔):

href="some_href"
-----------------------
href="some_href"

你没有非常清楚地解释它,正如kjhughes所指出的那样,也许你的样本HTML并不理想。

关于您尝试的路径表达式,由于输入是HTML,因此很难知道是否

<nobr>John<br>

表示“John”是 nobr元素内部。