org.w3c.dom.Document для XML-строки с использованием Groovy - PullRequest
3 голосов
/ 30 июня 2009

У меня есть экземпляр org.w3c.dom.Document, который мне нужно преобразовать в строку XML. Я знаю, как сделать это в Java (используя средства javax.xml.transform), но мне было интересно, есть ли более «отличный» способ сделать это?

Я попытался использовать класс DomToGroovy, который успешно создал отличную версию сценария документа DOM. Но я не уверен, как бы я использовал это для генерации строки XML. Возможно, я лаю не на том дереве ...

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

3 голосов
/ 30 июня 2009

но мне было интересно, есть ли более "отличный" способ сделать это?

Конечно, есть: класс groovy.xml.XmlUtil

Я не уверен, какой была версия Groovy, когда этот класс был добавлен, но я думаю, что это была ранняя версия.

Редактировать : класс groovy.xml.XmlUtil существует с версии 1.6.0 ; в версии 1.5.x он был назван groovy.xml.dom.DOMUtil . В любой версии этот класс не делает ничего особенного; если вы посмотрите на его источник , вы увидите, что это просто оболочка вокруг java.xml.transform. Тем не менее, я действительно ценю, что Groovy GDK предоставляет простой способ выполнения такой распространенной операции (запись xml в строку), тогда как Java JDK не может.

* * Пример тысяча двадцать-один: * * 1 022
import javax.xml.parsers.DocumentBuilderFactory
import groovy.xml.XmlUtil

def fileName = 'build.xml'

def builder     = DocumentBuilderFactory.newInstance().newDocumentBuilder()
def inputStream = new FileInputStream(fileName)
def doc         = builder.parse(inputStream)

println XmlUtil.serialize(doc.documentElement)

Всегда обращайте внимание на Groovy API и Groovy для JDK , прежде чем переходить к собственному решению (урок, который я усвоил нелегко)

2 голосов
/ 27 января 2011

Сейчас очень классно

> def doc = groovy.xml.DOMBuilder.newInstance().parseText("<foo count='42'><bar/><foo>")
> doc.documentElement as String
<foo count="42">
  <bar/>
</foo>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...