相关疑难解决方法(0)

使用嵌套的XPath谓词......精炼

所有好的答案!但问题值得改进......

我有以下示例XML ...

<objects>
    <object objectId="1123" ... />
    <properties refObjectId="1123" ... />
    <properties refObjectId="1123" refPropertyId="2311" ... />
    <properties refObjectId="1123" refPropertyId="4611" ... />
    <object objectId="2123" ... />
    <properties refObjectId="2123" refPropertyId="4311" ... />
    <properties refObjectId="2123" refPropertyId="8611" ... />
    ....
</objects>
Run Code Online (Sandbox Code Playgroud)

...以及以下XPath查询...

//object[//properties[@refObjectId=@objectId and not(@refPropertyId)]]
Run Code Online (Sandbox Code Playgroud)

我想这个查询将返回所有object节点那里是一个properties具有节点refObjectId,等于属性objectId的属性object节点,并没有"refPropertyId"属性...即对象1123只,不反对2123 ...但事实并非如此.似乎@objectId嵌套谓词中没有引用节点的objectId属性object.

有任何想法吗?我知道XML结构没有像你期望的那样嵌套,但是有这种结构的原因.

xpath

8
推荐指数
1
解决办法
1万
查看次数

XPath:选择以下兄弟姐妹直到某个班级

我有以下html代码段:

<table>
    <tr>
        <td class="foo">a</td>
            <td class="bar">1</td>
            <td class="bar">2</td>
        <td class="foo">b</td>
            <td class="bar">3</td>
            <td class="bar">4</td>
            <td class="bar">5</td>
        <td class="foo">c</td>
            <td class="bar">6</td>
            <td class="bar">7</td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个XPath 1.0表达式,它从一个.foo元素开始,并.bar在下一个元素之前选择所有后续.foo元素.
例如:我开始a并且只想选择12.
或者我开始b并想要选择3,45.

背景:我必须为此方法找到一个XPath表达式(使用Java和Selenium):

public List<WebElement> bar(WebElement foo) {
    return foo.findElements(By.xpath("./following-sibling::td[@class='bar']..."));
}
Run Code Online (Sandbox Code Playgroud)

有办法解决问题吗?
表达式应该适用于所有.foo元素,而不使用任何外部变量.

谢谢你的帮助!

更新:这些特殊情况显然没有解决方案.但是如果您的限制较少,则提供的表达式可以完美地运行.

xpath

5
推荐指数
1
解决办法
2338
查看次数

标签 统计

xpath ×2