В настоящее время я разбираю XML-ответ от веб-службы. Он возвращает конечное число элементов <result>
. В настоящее время я повторяю результаты NodeList
.Java org.w3c.dom - Рекурсивно найти и вернуть значение атрибута в NodeList
Пока я повторяю это, иногда мне нужно найти значение атрибута, которое существует в каждом элементе <result>
. В этом случае я хочу вызвать метод, который проходит через все дочерние узлы (и, возможно, дочерние дети и т. Д.) И возвращает значение атрибута.
Я попытался сделать это рекурсивно:
private String findAttrInChildren(Element element, String tag) {
if (!element.getAttribute(tag).isEmpty()) {
return element.getAttribute(tag);
}
NodeList children = element.getChildNodes();
for (int i = 0, len = children.getLength(); i < len; i++) {
if (children.item(i).getNodeType() == Node.ELEMENT_NODE) {
Element childElement = (Element) children.item(i);
return findAttrInChildren(childElement, tag);
}
}
// We didn't find it, return null
return null;
}
К сожалению, это не работает. Является ли рекурсия лучшим подходом здесь? Я думаю, что тот факт, что я хочу вернуть значение в конце, заманивает меня куда-то вдоль линии, а не реализует рекурсивный метод void
.