Получение количества детей с XOM
<?xml version="1.0" encoding="UTF-8"?>
<locations>
<location id="83">
<location_name>name</location_name>
<company_name>company a</company_name>
<machines>
<machine id="12">A</machine>
<machine id="312">B</machine>
</machines>
</location>
<location id="85">
<location_name>name</location_name>
<company_name>company c</company_name>
<machines>
<machine id="21">A</machine>
<machine id="45">B</machine>
</machines>
</location>
</locations>
Я использую XOM и пытаюсь получить все названия локаций, но я не знаю как.
Element root = doc.getRootElement();
int i = 1;
Element child = (Element) root.getChild(i);
while(child != null)
{
System.out.println(child.getFirstChildElement("location_name").getValue());
child = (Element) root.getChild(i++);
}
Но это не работает, показывает только имя, во втором цикле - ошибку.
И второй вопрос: что getChildCount()
рассчитывает??
1 ответ
Решение
getChild(int i)
возвращает i-й дочерний узел, не обязательно i-й дочерний элемент. использование getChildElements("location")
и перебрать возвращенный список. Другой подход заключается в использовании запроса XPath к корневому элементу.
Кроме того, Javadoc довольно информативен: http://www.xom.nu/apidocs/.