Regex vs. xpath при захвате двух следующих блоков в html

63
8

Я пытаюсь захватить два блока divs в html файле.

<...>
<div id="test">
...
</div>
<div id="test2">
...
</div>
...
</...>

Это просто очень простой пример. В основном я хочу найти два блока, которые я мог бы разделить на найти с помощью xpath, например "./div[@id="test"] "и"./div[@id="test2 "]".
Однако я хочу поймать оба divs вместе и хочу убедиться, что два блока находятся рядом друг с другом. Можно ли это сделать в XPath или лучше использовать регулярное выражение?

Спасибо J.

спросил(а) 2021-01-27T21:56:49+03:00 4 месяца, 3 недели назад
1
Решение
78

Чтобы найти divs, вы хотите использовать такой Xpath

//div[@id="test"][following::*[1][name() = "div" and @id="test2"]]

Он находит div с @id = "test", а 1-й элемент - div с @id = "test2"

К сожалению, мы не можем использовать переменную для временного результата, поэтому нам нужно записать ее дважды, чтобы взять оба divs

//div[@id="test"][following::*[1][name() = "div" and @id="test2"]] | 
//div[@id="test"][following::*[1][name() = "div" and @id="test2"]]/following::*[1]

ответил(а) 2021-01-27T21:56:49+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема