Я очищаю сайт от определенных фрагментов информации.Кусок HTML, который я ищу, выглядит следующим образом:
1. <div class="data">
2. <a class="anchor" name="123"></a>
3. <a class="image_link" id="image_id" href="http:/link1">
4. <img class="mainimg" id="456" src="http://link2" alt="description" title="title" >
5. </a>
6. </div>
На веб-странице, конечно, много таких <div class="data">
, и я хочу просмотреть все из них для получения следующей информации:
- name = 123 (из строки 2)
- href = link1 (из строки 3)
- src = http://link2, alt = описание (из строки 4)
Я могу сделать это, но используя 3 различных выражения xPath, например:
Object[] o1 = node.evaluateXPath("//div[@class='data']/a/img");
Object[] o2 = node.evaluateXPath("//div[@class='data']/a[@class='image_link']");
Object[] o3 = node.evaluateXPath("//div[@class='data']/a[@class='anchor']");
, а затем получаю каждый атрибут, например:
((TagNode)o1[i]).getAttributeByName("src");
Это работает, но я перебираю одни и те же данные HTML 3 раза и в итоге получаю 3 разные и отдельные структуры данных с необходимой мне информацией.
Как я могу оптимизировать это, используя только одно выражение xpath?Спасибо.