Я пытаюсь извлечь контент на основе заданного xpath.Когда это только один элемент, который я хочу извлечь, это не проблема.Когда у меня есть список элементов, соответствующих этому xpath, я получаю список узлов и могу извлечь значения.
Однако есть пара элементов, связанных друг с другом, образующих группу, и эта группа повторяется.
Один из способов, который я мог бы сделать, - это получить список узлов родительского узла всех таких групп, а затем применить технику синтаксического анализа на основе SAX для извлечения информации.Но это привело бы к кодированию конкретного шаблона.Я хочу сделать это общим.напр.
<html><body>
<!--... a lot divs and other tags ... -->
<div class="divclass">
<item>
<item_name>blah1</item_name>
<item_qty>1</item_qty>
<item_price>100</item_price>
</item>
</div>
<div class="divclass">
<item>
<item_name>blah2</item_name>
<item_qty>2</item_qty>
<item_price>200</item_price>
</item>
</div>
<div class="divclass">
<item>
<item_name>blah3</item_name>
<item_qty>3</item_qty>
<item_price>300</item_price>
</item>
</div>
</body></html>
Я мог бы легко написать код для this xml, но не универсальный, который мог бы анализировать любую заданную спецификацию.
Я должен быть в состоянии создатьlist
из map
из attribute-value
сверху.
Кто-нибудь пробовал это?
EDIT Список входных путей:
1. "html:div[@class='divclass']/item/item_name"
2. "html:div[@class='divclass']/item/item_qty"
3. "html:div[@class='divclass']/item/item_price"
Ожидаемый вывод в виде простого текста:
item_name:blah1;item_qty:1;item_price:100
item_name:blah2;item_qty:2;item_price:200
item_name:blah3;item_qty:3;item_price:300
Ключевым моментом здесь является то, что, если я применю каждый xpath отдельно, он будет извлекать мне результаты по вертикали, то есть первый получит все item_names, второй получит все qtys.Так что я потеряю взаимосвязь внутри этих частей.
Надеюсь, это очистит мои требования.
Спасибо, Найн