Необходимо найти xpath, который соответствует любому тегу html, который содержит боковую панель слова в любом теге html. Пример:
<p class='my class'>This is some text</p>
<h1 class='btn sidebar btn-now'><p>We have more text here</p><p> and anoter text here</p></div>
<div id='something here'>New text here</div>
<div id='something sidebar here'>New text again</div>
<nav class='this sidebar btn'>This is my nav</nav>
<sidebar><div>This is some text</div></sidebar>
Мне нужен xpath, чтобы получить любой элемент html, у которого есть слово «боковая панель» между начальным <и конечным> тегом html, будь то класс, идентификатор или имя тега html. В приведенном выше примере мне нужно получить в результате:
<h1 class='btn sidebar btn-now'><p>We have more text here</p><p> and anoter text here</p></div>
<div id='something sidebar here'>New text again</div>
<nav class='this sidebar btn'>This is my nav</nav>
<sidebar><div>This is some text</div></sidebar>
Должен быть xpath, а не regex
@melpomene да, HTML-тег с боковой панелью внутри <>
У последнего нет sidebar в HTML-коде.
тег <sidebar> (не является допустимым тегом html, был просто в качестве примера), но в основном, если он существует, все между <sidebar> и </sidebar> должно совпадать. Я могу удалить это из приведенного выше примера, если вы считаете, что там не все в порядке.
Я говорил о своих примерах, а не о ваших. <p class = "sidebar"> не содержит sidebar. Вы хотите, чтобы его нашли или нет?
aaa, НЕТ, но если класс - sidebarfoo, или foosidebar, или foosidebarfoo, то в этом случае да
Ваша проблема не может быть решена с помощью XPath.
хорошо, но в случае, если class = "sideb & # 97; r" был бы правильным ответом, как бы выглядело решение xpath
что ты уже испробовал?





Попробуйте ниже и дайте мне знать, если это не то, что вы ищете:
//*[contains(@*, "sidebar") or contains(name(), "sidebar")]
contains(@*, "sidebar") означает узел с любой атрибут, содержащий "sidebar"contains(name(), "sidebar") - имя узла, содержащего "sidebar"Если вам нужно, чтобы id содержал только class или "sidebar":
//*[contains(@id, "sidebar") or contains(@class, "sidebar") or contains(name(), "sidebar")]
Проверяет ли это как имена атрибутов, так и значения атрибутов?
Только значения атрибутов. Вам также нужны имена атрибутов? Если да, добавьте предикат or contains(@*/name(), "sidebar")
Должен ли он также найти
<a href = "sidebar">,<div data-sidebar = "foo">,<p class = "sidebar">?