Как получить элемент из xml с помощью Xpath Java - PullRequest
0 голосов
/ 17 июня 2020
<employees>
    <employee>
        <firstName>Lokesh</firstName>
        <lastName>Gupta</lastName>
        <department>
            <id>101</id>
            <name>IT</name>
        </department>
    </employee>
</employees>

Я хотел получить имя элемента с помощью Xpath ..

Мне нужно подсчитать количество элементов, которые я получаю, используя count(//employees/*) и count(//employees/employee/department/*)

it возвращает количество каждого родителя ..

Мне также нужно получить имена элементов //employees/employee/*/name(), чтобы получить имена элементов FirstName, LastName и Department ..

также (//employees/employee/department/*/name()), чтобы вернуть имя и идентификатор .. но отображается ошибка javax.xml.transform.TransformerException: Unknown nodetype: name .

1 Ответ

1 голос
/ 17 июня 2020

Вы хотите получить имена элементов (а не их значение). name() должен появиться первым. Поскольку javax поддерживает только XPath 1.0, вы можете использовать:

concat(name(//employees/employee/*[1]),",",name(//employees/employee/*[2]),",",name(//employees/employee/*[3]))

Вывод: firstName,lastName,department

concat(name(//employees/employee/department/*[1]),",",name(//employees/employee/department/*[2]))

Вывод: id,name

Если вы не знаете количество дочерних элементов для каждого родительского элемента, вам следует использовать подход al oop. Сначала подсчитайте и сохраните количество дочерних элементов (count(//employees/employee/*)), затем сделайте al oop, где вы увеличиваете индекс позиции ([i]) на каждой итерации //employees/employee/*[i] i=i+1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...