У меня вопрос, связанный с возвратом значений из глубины внутри структуры xml. Во-первых, вот XML-код:XML в Java: получить значения из определенных элементов
<?xml version="1.0" encoding="UTF-8" ?> <log> <published>2014-03-28T15:28:36.646Z</published> <actor> <objectType>person</objectType> <id>e1b8948f-321e-78ca-d883-80500aae71b5</id> <displayName>anonymized</displayName> </actor> <verb>update</verb> <object> <objectType>concept</objectType> <id>a1ad6ace-c722-ffa9-f58e-b4169acdb4e3</id> <content>time</content> </object> <target> <objectType>conceptMap</objectType> <id>4b8f69e3-2914-3a1a-454e-f4c157734bd1</id> <displayName>my first concept map</displayName> </target> <generator> <objectType>application</objectType> <url>http://www.golabz.eu/content/go-lab-concept-mapper</url> <id>c9933ad6-dd4a-6f71-ce84-fb1676ea3aac</id> <displayName>ut.tools.conceptmapper</displayName> </generator> <provider> <objectType>ils</objectType> <url>http://graasp.epfl.ch/metawidget/1/b387b6f</url> <id>10548c30-72bd-0bb3-33d1-9c748266de45</id> <displayName>unnamed ils</displayName> </provider> </log>
Я нашел метод здесь в Stackoverflow, который занимается тем, что (How to retrieve element value of XML using Java?):
protected String getString(String tagName, Element element) {
NodeList list = element.getElementsByTagName(tagName);
if (list != null && list.getLength() > 0) {
NodeList subList = list.item(0).getChildNodes();
if (subList != null && subList.getLength() > 0) {
return subList.item(0).getNodeValue();
}
}
return null;
}
Моя проблема заключается в том, что я не знаю, как для получения определенного идентификатора (или значения другого элемента) с этим методом БЕЗ использования явных предопределенных методов (я хочу передать идентификатор, который я ищу в самой голове метода). Если я использую getString("id", document.getDocumentElement)
, он возвращает только «e1b8948f-321e-78ca-d883-80500aae71b5» -ID. Что делать, если я хочу получить идентификатор «a1ad6ace-c722-ffa9-f58e-b4169acdb4e3», который является подзоном от <object>
?
Никогда не слышал о XPath раньше. Как я могу получить доступ к значению внутри? Если я пишу 'idNodeList.item (0) .getNodeValue()', он просто возвращает «null». –
@ Обновлено X-Fate. Текст, который вы хотите получить, является дочерним узлом узла элемента «id». – manouti
Отлично! С помощью 'getTextContent' возвращается значение. Благодаря! Проблема решена ... Я думаю ...: p –