我有这个xpath:
.//*[@id='some_id']/td//div
现在我想选择 div 元素下所有特定类型的子元素,比如所有的 label 或 span。类似这样:
.//*[@id='some_id']/td//div/(label|span)/.......
但是这不是有效的xpath。我该怎么做(在不为给定的2个子类型编写两个完整的xpath的情况下)
我有这个xpath:
.//*[@id='some_id']/td//div
现在我想选择 div 元素下所有特定类型的子元素,比如所有的 label 或 span。类似这样:
.//*[@id='some_id']/td//div/(label|span)/.......
但是这不是有效的xpath。我该怎么做(在不为给定的2个子类型编写两个完整的xpath的情况下)
descendant::
表示在所有下级层级中查找,如果只要查找子级,请使用
.//*[@id='some_id']/td//div/*[self::label or self::span]
您需要使用
descendant::
来选择特定元素的子元素。请看下面的例子:
.//*[@id='some_id']/td//div/descendant::label[@class='some-class']
以上Xpath将获取所有类名为“some-class”的标签,实际上它是“.//*[@id='some_id']/td//div/”元素的子元素。
要查找多个子元素,请使用以下Xpath:
.//*[@id='some_id']/td//div/descendant::*[local-name()='label' or local-name='span']
.//*[@id='some_id']/td//div/*[self::label or self::span]
- splash58td/div/(label|span)
)在XPath 2.0中是有效的,但在XPath 1.0中无效。如果您只对1.0感兴趣,请将您的问题标记为“XPath 1.0”。 - Michael Kay