Извлечь XML с помощью запроса XPath - PullRequest
2 голосов
/ 04 января 2012

Основываясь на помощи из других вопросов, которые я задавал, у меня есть этот отличный фрагмент:

NodeList nodes = (NodeList)xpath.evaluate( xpathQuery, records, XPathConstants.NODESET );
return nodes.collect { node -> node.getTextContent() }

, который позволяет мне выполнить xpathQuery на records и получить результат.

Что я хочу сейчас сделать, это просто вернуть (в виде строки) необработанный XML-результат (а не текстовое содержимое) (я понимаю, что это не приведет к действительному XML-документу).

Так, что:

xml = "<root><apple><color>RED</color></apple>…</root>"
xpathQuery = "/root/apple[1]"

вернет:

"<apple><color>RED</color></apple>"

(без вложенных тегов <apple> также будет хорошо).Есть ли простой способ сделать это?

Или, если не получится, есть ли другой способ добиться этого?

1 Ответ

1 голос
/ 09 ноября 2012

Это не очень элегантно, но может быть полезно:

Используйте это:

concat('<apple><color>', //root/apple[1]/color, '</color></apple>')

Если вы знаете, что структура не изменится, или для более сложного неизвестного числа дочерних элементов в <apple>, используйте:

//root/apple[1]/node(), чтобы дать вам все дочерние узлы, и использовать функцию .each groovy для итерации по узлам, создания строковых отступов и объединения их с исходным результатом //root/apple[1]/color.

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