I want to search by a number such as '022222', and it should return the value of the corresponding h2 tag. Any thoughts on how this would be done?
The HTML document can be found at http://pastie.org/1211369
Начнем с того, что текст по предоставленной ссылке не является правильно сформированным документом XML или XHtml и не может быть напрямую проанализирован с XPath.
Поэтому я завернул его в <html>
элемент.
В этом XML-документе одно из выражений XPath, которое точно выбирает нужный текстовый узел, является :
/*/div[div/ul/li = '022222']/div[@class='content']/h2/text()
Помимо других преимуществ, это выражение XPath не использует никаких обратных осей и, следовательно, более читабельно.
Полный XML-документ, по которому оценивается это выражение XPath, выглядит следующим образом:
<html>
<div class="item">
<div class="content"><h2>Item 1</h2></div>
<div class="phone">
<ul class="phone-single">
<li>01234 567890</li>
</ul>
</div>
</div>
<div class="item">
<div class="content"><h2>Item 2</h2></div>
<div class="phone">
<ul class="phone-multiple">
<li>022222</li>
<li>033333</li>
</ul>
</div>
</div>
<div class="item">
<div class="content"><h2>Item 3</h2></div>
<div class="phone">
<ul class="phone-single">
<li>02345 678901</li>
</ul>
</div>
</div>
<div class="item">
<div class="content"><h2>Item 4</h2></div>
<div class="phone">
<ul class="phone-multiple">
<li>099999999</li>
<li>088888888</li>
</ul>
</div>
</div>
</html>