Помогите с запросом xPath - PullRequest
0 голосов
/ 18 января 2011

Я использую библиотеку HTML-анализатора для анализа веб-страницы в XML. С помощью XML я хочу выбирать узлы, содержащие текст, принадлежащий друг другу, с помощью запросов xPath.

Вот пример HTML:

<p><span style="font-family: 'Verdana','sans-serif'; font-size: 32pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 11pt; mso-bidi-font-size: 18.0pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 36pt; mso-fareast-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: EN-US; mso-ansi-language: SV; mso-bidi-language: AR-SA;">&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VECKA 3</span></span></p><p><span style="font-family: 'Verdana','sans-serif'; font-size: 32pt;"></span><span style="font-family: 'Verdana','sans-serif'; font-size: 11pt; mso-bidi-font-size: 18.0pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;17-21 JANUARI</span></p>
<p style="margin-bottom: 0pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 11pt; mso-bidi-font-size: 18.0pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Verdana','sans-serif'; font-size: 11pt; mso-bidi-font-size: 18.0pt;">11.30-14.30</span></p>
<p style="margin-bottom: 0pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; mso-bidi-font-size: 15.0pt;">MÅNDAG:&nbsp;Parmesangratinerad tungafile med paprikasås</span></p>
<p style="margin-bottom: 0pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; mso-bidi-font-size: 15.0pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Biffgryta med syltlök &amp; ris</span></p>

Используя xPath в разобранном фрагменте HTML, я хочу выбрать <span> -узел, содержащий слово MÅNDAG, а также следующий <span> -узел, который ему принадлежит. Так, например, я хочу выбрать узлы, которые содержат текст: «MÅNDAG: Parmesangratinerad tungafile med паприки» и текст «Biffgryta med syltlök & ris».

Я думаю, что я хочу использовать xPath, который выглядит примерно так:

"//span[contains(.,'MÅNDAG') or (contains(.,'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;') and ../parent-sibling::/span[contains(.,'MÅNDAG')]]"

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 18 января 2011

Я хочу выбрать <span> -узел содержащий слово MÅNDAG, но также следующий <span> -узел, который принадлежит ему

Выражение XPath 1.0 без объединения наборов узлов:

//span[(.|preceding::span[1])[contains(.,'MÅNDAG')]]
0 голосов
/ 18 января 2011

В XPath 2.0:

//span[contains(.,'MÅNDAG')/(. | following::span[1])

В XPath 1.0:

//span[contains(.,'MÅNDAG') | //span[contains(.,'MÅNDAG')/following::span[1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...