正如在这个堆栈溢出答案 https://stackoverflow.com/questions/4608097/xpath-to-select-a-table-row-that-has-a-cell-containing-specified-text/4608452#4608452假设您需要选择一个特定的表,然后选择它的所有行。由于 HTML 的宽容性,以下三种标记都是合法的标记:
<table id="foo"><tr>...</tr></table>
<table id="foo"><tbody><tr>...</tr></tbody></table>
<table id="foo"><tr>...</tr><tbody><tr>...</tr></tbody></table>
您担心表中嵌套的表,因此不想使用像这样的 XPath
table[@id="foo"]//tr
.
如果您可以将所需的 XPath 指定为正则表达式,它可能类似于:
table[@id="foo"](/tbody)?/tr
一般来说,如何指定允许选择器层次结构中存在可选元素的 XPath 表达式?
需要明确的是,我并不是试图解决现实世界的问题或选择特定文档的特定元素。我正在寻求解决一类问题的技术。
我不明白为什么你不能使用这个:
//table[@id='foo']/tr|//table[@id='foo']/tbody/tr
如果您想要一个没有节点集并集的表达式:
//tr[(.|parent::tbody)[1]/parent::table[@id='foo']]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)