У меня есть HTML-структура такой страницы,

<form align="center" method="post" name="form1">
<input type="hidden" value="J0512-0491" name="jobid">
<input type="hidden" value="1" name="BDID">

<br>
<hr>
<b>Category: </b>
Food & Beverage
<br>
<b>City: </b>
Carlyle, Saskatchewan, Canada
<br>
<b>Job Number: </b>
05012-04191
<br>
<b>Salary Range: </b>
$13.19 - 16.48
<br>
<b>Closing Date: </b>
31/03/2013
<br>
<hr>
<b></b>

Мне нужно извлечь текст «Город:», то есть «Карлин, Саскачеван, Канада», используя xpath. есть идеи о том, как этого добиться?

1
Mansoor Elahi 11 Дек 2012 в 13:05
1
Это недопустимый XML! В нем есть некодированные символы, такие как &, и теги не закрыты .. Это похоже на HTML, но вы должны закрыть теги ..
 – 
Rookie Programmer Aravind
11 Дек 2012 в 13:13
Ну, я включил только часть html, а не весь html страницы :)
 – 
Mansoor Elahi
11 Дек 2012 в 13:15
Ладно! Позвольте мне спросить вас, где вы собираетесь использовать XPATH ?? в XSLT? или C # (XML DOM)? как где?
 – 
Rookie Programmer Aravind
11 Дек 2012 в 13:18
Я извлекаю содержимое страницы с помощью анализатора Ruby Mechanize и использую // * [contains (text (), 'City')], но выбираю только тег
, но не текст под ним
 – 
Mansoor Elahi
11 Дек 2012 в 13:24
Вы должны вставить текст внутри тегов. Например: <b>City</b><span>Carlyle, Saskatchewan, Canada</span>
 – 
Charles-Édouard Coste
11 Дек 2012 в 13:34

1 ответ

Лучший ответ

Используйте этот XPath:

//*[contains(text(),'City')]/following-sibling::text()[1]
1
Kirill Polishchuk 11 Дек 2012 в 14:22
Он выбирает весь текст тегов одного и того же типа
, что нужно сделать, если я хочу исключить оставшиеся текстовые поля?
 – 
Mansoor Elahi
11 Дек 2012 в 13:42
1
Это работает? //*[contains(text(),'City')]/following-sibling::text()[1]
 – 
Charles-Édouard Coste
11 Дек 2012 в 13:50
Да @ Charles-EdouardCoste работает! Вы можете поместить это под ответ, чтобы я мог принять это
 – 
Mansoor Elahi
11 Дек 2012 в 14:18