xml - 如何从 XPath 中的标记中选择一个未知层数的节点?

标签 xml xpath lxml

例如,如果我有

<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 的查询?

编辑:我应该注意我对抓取页面上的所有输入元素不感兴趣,我只想要作为特定表单的子元素的所有输入元素,所以“//”就出来了。

最佳答案

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

/html/path/to/form//input

更可取。如果您在表单的上下文中,那就更好了。您的 XPath 查询看起来更像:
form//input

或者如果你只是想要'blah'形式的 child :
form[@name='blah']//input

关于xml - 如何从 XPath 中的标记中选择一个未知层数的节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1689712/

相关文章:

jsf - 将元素 ID 与 JSF 动态 View ID 匹配

python - Python 中的 HTML 结构差异

xml - InstallShield XML 文件更改 - 安装时更改节点属性

php - 如何通过 PHP 处理 XML 输出中的水平省略号(三个点)字符

Xpath 2.0 在线检查器

python - 使用 xpath、lxml、python 的父属性条件的元素路径

python - 如果遇到异常则跳过 XML 读取循环的迭代 Python

java - 使用 xpath 根据另一个属性的值检索属性值

java - 当来自不同实体类型的 ID 重叠时,是否可以将 @JsonIdentityInfo 与 ObjectIdGenerators.PropertyGenerator 一起使用?

python - 如何使用 Selenium 和 Python 从 html 选择下拉列表中选择没有任何 ID 属性的选项