代码之家  ›  专栏  ›  技术社区  ›  John Gietzen

xpath:我可以选择下一个(或上一个)兄弟节点与某些条件匹配的节点吗?

  •  2
  • John Gietzen  · 技术社区  · 15 年前

    我正在使用敏捷性包重新格式化一个HTML文档,并且遇到了对xpath理解的限制。

    在我正在使用的文档中,以下是一个常见的结构:

    一百二十八

    它是这样建造的:

    128<img src="" style="display: none;" alt="^(" /><sup>2</sup><img src="" style="display: none;" alt=")" />
    

    因此,当您选择它并将其复制到剪贴板时,它会变成:

    128 ^(2)

    现在,我想使用xpath删除这些 img 标签。

    以下是迄今为止我所拥有的:

    //img[@alt='^('  ???/sup]
    

    如何根据直接同级的存在来选择元素?

    2 回复  |  直到 12 年前
        1
  •  2
  •   John Gietzen    12 年前

    显然是这样的:

    //img[@alt='^(' and following-sibling::*[1][self::sup]]
    

    那是(而且,我猜,在这里):

    //img
    

    img (任何地方)…

    [@alt='^(' and  ...  ]
    

    …谁的 alt 属性是 '^(' 还有…

    following-sibling::*[1]
    

    …他的第一个兄弟…

    [self::sup]
    

    …可以称自己为 sup .

        2
  •  0
  •   Matthew Flynn    15 年前

    从我的头上,使它成为一个复合条件。类似:

    //img[@alt='^('  ???/sup AND preceding-sibling::*[1] AND following-sibling::*[1]]