Получение количества детей с 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/.

Другие вопросы по тегам