Вы хотите получить имена элементов (а не их значение). 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
.