重构 Xpath:同一父级下的多个表达式

Refactoring Xpath: Multiple expressions under the same parent

本文关键字:表达式 Xpath 重构      更新时间:2023-09-26

我有一个Xpath表达式,如下所示:

//*[@id="my_element"]/table//select|//*[@id="my_element"]/table//input[@type!="hidden"]|//*[@id="my_element"]/table//textarea

如您所见,我想选择三种不同类型的元素selectinput[@type!="hidden"]textarea都在同一父//*[@id="my_element"]/table

有没有更简洁的写法?我在想这样的事情:

//*[@id="my_element"]/table//(select|input[@type!="hidden"]|textarea)

但到目前为止,我的研究还没有取得任何结果。我尝试了同样的(descendant::select|descendant::input)(descendant::select|input),但似乎这些它们不起作用。

您的"简洁"表单是有效的 XPath 2.0 表达式。所以答案是,使用 XPath 2.0。