2012-04-02 53 views
3

我想將格式化的xml打印到文件,但我的XmlNodePrinter只是打印一個空白文件。我想,我傳入的xml對象是正確填充的。我可以使用StreamingMarkupBuilder進行打印,但它的格式全部在一行上。我不知道爲什麼我不能使用XmlNodePrinter。這是我的代碼的相關部分。Groovy - XmlNodePrinter打印空白文件

該代碼的目標是修改一個xml配置文件。我必須對某個權限進行查找/替換。

File file = new File("input.xml") 
def root = new XmlSlurper().parse(file) 

def admins = root.user.findAll {[email protected]().equals("admin")} 
admins.each { admin -> 
    admin.permission.findAll { [email protected]().equals("RoleManagement") 
    }.each { 
    [email protected] = "AdminRoleManagement" 
    } 
} 

String filename = "output.xml" 
new XmlNodePrinter(new PrintWriter(filename)).print(root) 

感謝

回答

2

我相信XmlNodePrinter需要Node而非GPathResult

XmlSlurper.parse回報GPathResult

那麼顯而易見的解決方案是使用XmlParser代替XmlSlurper

或者,你可以用StreamingMarkupBuilder做:

def smb = new StreamingMarkupBuilder().bind { mkp.yield root } 
new File('output.xml').text = groovy.xml.XmlUtil.serialize(smb) 
+0

完美!謝謝! – jeff 2012-04-02 13:45:34