2009-06-30 11 views
3

Ich habe eine org.w3c.dom.Document-Instanz, die ich in eine XML-Zeichenfolge konvertieren muss. Ich weiß, wie man das in Java macht (mit javax.xml.transform facilities), aber ich fragte mich, ob es einen "groovigeren" Weg gibt, dies zu tun?org.w3c.dom.Document zu XML-String mit Groovy

Ich habe versucht, eine DomToGroovy-Klasse zu verwenden, die erfolgreich eine groovige Skriptversion des DOM-Dokuments erstellen. Aber ich bin nicht sicher, wie ich dies verwenden würde, um eine XML-Zeichenfolge zu generieren. Ich könnte den falschen Baum bellen ...

Jede Hilfe würde sehr geschätzt werden!

Antwort

3

Aber ich fragte mich, ob es einen "groovigeren" Weg gibt, dies zu tun?

Es ist sicher: Klasse groovy.xml.XmlUtil

Ich bin nicht sicher, was die Version von Groovy war, wenn diese Klasse hinzugefügt wurde, aber ich denke, es war eine frühe Version.

Bearbeiten: Klasse groovy.xml.XmlUtil exists since version 1.6.0; In der Version 1.5.x hieß es groovy.xml.dom.DOMUtil. In beiden Versionen macht diese Klasse nichts zu grooviges; Wenn Sie its source betrachten, werden Sie sehen, dass es nur ein Wrapper um java.xml.transform ist. Ich schätze jedoch, dass das Groovy GDK eine einfache Möglichkeit bietet, eine solche allgemeine Operation durchzuführen (Schreiben von xml in eine Zeichenkette), während das Java JDK versagt.

Beispiel:

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) 

Schauen Sie immer auf der Groovy API und der Groovy extensions to the JDK vor Ihrer eigenen Lösung rollen (eine Lektion habe ich gelernt, auf die harte Tour)

+0

I denke, dass es in Groovy 1.6 hinzugefügt wurde. Es ist nicht in der Groovy 1.5, die mit NetBeans 6.5 kommt – Patrick

1

Es ist sehr groovy jetzt

> def doc = groovy.xml.DOMBuilder.newInstance().parseText("<foo count='42'><bar/><foo>") 
> doc.documentElement as String 
<foo count="42"> 
    <bar/> 
</foo> 
Verwandte Themen