Выбор цитаты после определенного промежутка с Xpath - PullRequest
2 голосов
/ 29 июня 2011

Итак, в данный момент я использую Xpath для извлечения текста из тегов блочных цитат, но мне нужно иметь возможность выбирать ОПРЕДЕЛЕННЫЕ блочные цитаты. Единственное различие между двумя типами, которые мне нужны, состоит в том, что они находятся сразу после пролетов. Допустим, мне нужно получить text1 и text2 друг от друга, это будет HTML:

<span id="1">some code here</span>
<blockquote>text1</blockquote>

more code in here

<span id="2">some code here</span>
<blockquote>text</blockquote>

Как мне поступить?

Ответы [ 2 ]

3 голосов
/ 29 июня 2011

Предположим, у нас есть этот XML:

<root>
<span id="1 nothread">some code here</span>
<blockquote>text1</blockquote>

more code in here

<span id="2 nothread">some code here</span>
<blockquote>text</blockquote>

<span id="3">some code here</span>
<blockquote>text</blockquote>

<blockquote>not selected text</blockquote>
</root>

Итак, этот XPath: //blockquote[local-name(preceding::*[1]) = 'span' and contains(preceding::*[1]/@id, 'nothread')]/node() выбирает все blockquote, если он идет сразу после span, а span / @ id содержит nothread.Результат:

  1. text1
  2. text

Итак, видите, not selected text не был выбран

1 голос
/ 29 июня 2011

Я бы использовал:

//span[starts-with(@id,'nothread')]/following::*[1][name()='blockquote']

Это позволит получить все требуемые элементы цитаты.

Чтобы получить текстовые узлы:

//span[starts-with(@id,'nothread')]/following::*[1][name()='blockquote']/text()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...