Я использую Groovy метод parseText XmlParser для синтаксического анализа строки XML и возврата объекта (Node obj) для дальнейшей обработки / манипуляции в восходящем направлении. Однако анализ разбирает все оболочки CDATA.
Пример.
import groovy.xml.XmlUtil
String xmlString = """
<stuff>
<people><![CDATA[Person01
Person02
Person03]]></people>
</stuff>
"""
Node xmlParsed = new XmlParser().parseText( xmlString )
print xmlParsed.people
print "\n----\n"
print XmlUtil.serialize( xmlParsed )
Выходы:
[people[attributes={}; value=[Person01
Person02
Person03]]]
----
<?xml version="1.0" encoding="UTF-8"?><stuff>
<people>Person01
Person02
Person03</people>
</stuff>
Таким образом, вы видите, что CDATA пропал в выводе , Я пробовал это с последними стабильными Groovy (2.5.9) и 3.0.0-r c -3 с одинаковыми результатами.
У меня много стабильного работающего кода вверх по течению с объектом Node, который возвращает XmlParser, так что я надеюсь, что есть что-то еще, что я могу сделать, чтобы сохранить CDATA. В противном случае, у меня есть много хакерских идей, которые наверняка сожрут производительность! ;)
Спасибо за чтение и за любые идеи! :) Эри c