Допустим, у меня есть следующая база данных (как правило, они будут намного больше):
<inventory>
<book year="2000">
<title>Snow Crash</title>
<author>Neal Stephenson</author>
<publisher>Spectra</publisher>
<isbn>0553380958</isbn>
<price>14.95</price>
</book>
<book year="2005">
<title>Burning Tower</title>
<author></author>
<publisher>Pocket</publisher>
<isbn>0743416910</isbn>
<price>5.99</price>
</book>
<book year="1995">
<title>Zodiac</title>
<author>Neal Stephenson</author>
<publisher>Spectra</publisher>
<isbn>0553573862</isbn>
<price>7.50</price>
</book>
<!-- more books... -->
Я хочу взять все названия книг и авторов, а затем распечататьиз названий и соответствующих авторов.Обратите внимание, что вторая запись не перечисляет автора.Я обнаружил, что XPath создаст список из 3 книг, но только из 2 авторов.Поэтому я не могу напечатать соответствующие комбинации «Книга / Автор», создав цикл с одинаковыми значениями индекса из каждого списка (он будет работать только для первой записи, затем сбрасывается на единицу и в итоге выдает исключение нулевого указателя, когда естьбольше нет записей в списке авторов).Есть ли способ обойти эту проблему?
Спасибо, что прочитали.
Примечание: пока что фрагмент кода:
XPathExpression expr1 = xpath.compile("//pre:entry/pre:title/text()");
XPathExpression expr2 = xpath.compile("//pre:entry/pre:author/text()");
Object result1 = expr1.evaluate(doc, XPathConstants.NODESET);
Object result2 = expr2.evaluate(doc, XPathConstants.NODESET);
NodeList nodes1 = (NodeList) result1;
NodeList nodes2 = (NodeList) result2;
for (int i = 0; i < nodes1.getLength(); i++) {
System.out.println(nodes1.item(i).getNodeValue());
System.out.println(nodes2.item(i).getNodeValue());
}