代码之家  ›  专栏  ›  技术社区  ›  gct

如何从xpath中的标记中选择一个级别数未知的节点?

  •  1
  • gct  · 技术社区  · 15 年前

    例如,如果我有

    <form name="blah">
       <input name="1"/>
       <input name="2"/>
       <table>
          <tr>
            <td>
              <unkown number of levels more>
               <input name="3"/>
            </td>
          </tr>
       <table>
    </form>
    

    如何组合将返回输入1、2和3的查询?

    编辑:我应该注意到我对抓取不感兴趣 全部的 页面上的输入元素,我只希望所有的输入元素都是特定表单的子元素,所以“/”是正确的。

    2 回复  |  直到 15 年前
        1
  •  7
  •   Jon W    15 年前

    使用 // 搜索而不考虑级别。请记住,这是一个“昂贵”的搜索。因此,可以指定的上下文越多,xpath调用它的速度就越快。

    /html/path/to/form//input
    

    优先考虑。如果你在形式的语境中,那就更好了。您的xpath查询看起来更像:

    form//input
    

    或者如果你只是想要“blah”形式的孩子:

    form[@name='blah']//input
    
        2
  •  2
  •   Wim    15 年前

    使用双斜杠,所以 //input 它将选择所有的输入元素,而不考虑层次结构。

    如果只需要表单元素中的所有输入标记,请使用 //表单/输入 /form//input .

    编辑: 是的,谢谢你的更正。