VB Agility Pack XPath根据另一个子节点值选择父节点中的子节点

时间:2014-04-24 10:24:51

标签: html vb.net xpath html-agility-pack

我有一个像这样的HTML DOM:

<div class="productcontainer">
    <div class="image jsThumbnailReplace">
        <a href="">
            <img src="/img/noimagemedium.jpg"/>
        </a>
    </div>
    <div class="productdata"
        <div class="descriptionsection">
            <div class="title">title</div>
        </div>
    </div>
</div>

我想只在图片标签中的来源包含“noimagemedium”时才选择标题文字。我使用Visual Studio 2010与VB.Net和HTML Agility包来实现这一目标。调试器说XPath表达式无效。

我认为这个XPath应该这样做但它不起作用:

//div[@class='descriptionsection']/div[@class='title'][//div[@class='productcontainer']/div[contains(@class, 'image') and contains(@class, 'jsThumbnailReplace')]/a/img[contains(@src, 'noimagemedium')]]

显然语法错误但我无法理解。感谢帮助:)

1 个答案:

答案 0 :(得分:0)

我自己找到了解决方案。关键是在第一个“和”之后。你不需要一个开口支架,你可以直接调用路径。需要注意的是,contains()不会搜索原始节点文本,您必须指定文本或属性。考虑到这些知识,我可以构建XPath。

//div[@class='productcontainer' and div[1]/a/img[contains(@src, 'noimagemedium')]]/div[@class='descriptionsection']/div[@class='title']"