Вызов, который вы делаете для getDocument()
, возвращает весь документ XML.
Вызов query()
возвращает объект Nodes
, непосредственно содержащий ссылки на узлы, которые вы ищете.
Если вы измените на
Element location = (Element)doc.query(
"//location[location_name='"+ locationName +"']/*").get(0);
System.out.println(location.getAttribute("location_name").getValue());
, все должно быть в порядке
РЕДАКТИРОВАТЬ (от extraneon)
Некоторое дополнительное объяснение не заслуживаетсамого ответа: выполнив
Element location =
(Element) doc.query("//location[location_name='"
+ locationName +"']/*").get(0)
.getDocument().getRootElement();
, вы выполните поиск по дереву и получите запрошенный узел.Но затем вы вызываете getDocument().getRootNode()
на элементе, который вы хотите, что даст вам самый верхний узел документа.
Таким образом, приведенный выше запрос можно упростить до:
Element location = (Element)doc.getRootElement();
, что не соответствует ожиданиям.
Это немного похоже на прыжок с трамплина.Вы спускаетесь туда, где вам нужно (элемент), но немедленно возвращаетесь туда, откуда вы пришли (корневой элемент).