Как и в этом ответе переполнения стека представьте, что вам нужно выбрать конкретную таблицу, а затем все ее строки.Из-за вседозволенности 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, которое позволяетНеобязательный элемент в иерархии селектора?
Чтобы было ясно, я не пытаюсь решить реальную проблему или выбрать конкретный элемент конкретного документа.Я прошу методы для решения класса проблем.