2009-06-30 54 views
3

我有一個org.w3c.dom.Document實例,我需要將其轉換爲XML字符串。我知道如何在Java中執行此操作(使用javax.xml.transform工具),但我想知道是否有更「常規」的方式來執行此操作?org.w3c.dom.Document to XML string using Groovy

我試過使用DomToGroovy類,它成功地創建了一個groovy腳本版本的DOM文檔。但我不知道我將如何使用它來生成一個XML字符串。我可能會吠叫錯誤的樹...

任何幫助將不勝感激!

回答

3

但我想知道是否有更「常規」的方式來做到這一點?

有肯定的是:類groovy.xml.XmlUtil

我不知道是什麼的Groovy的版本中添加這個類的時候,但我想這是一個早期版本。

編輯:class groovy.xml.XmlUtil exists since version 1.6.0;在版本1.5.x中,它被命名爲groovy.xml.dom.DOMUtil。在任何一個版本中,這個班都不會做任何事情。如果你看its source,你會發現它只是一個圍繞java.xml.transform的包裝。但是,我真的很感謝Groovy GDK提供了一種簡單的方法來執行這樣的通用操作(將xml寫入字符串),而Java JDK無法執行此操作。

例子:

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和滾動自己的解決方案(一節課我學到了艱辛的道路)

+0

我以前Groovy extensions to the JDK認爲它是在Groovy 1.6中添加的。它不在隨NetBeans 6.5一起提供的Groovy 1.5中 – Patrick 2009-07-02 16:00:31

1

現在很時髦

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