2011-08-15 49 views
3

我明白,使用Groovy的XMLSlurper和StreamingMarkupBuilder時,XML文檔更改不會立即生效。但是,每當我更改文檔時,我都不會很高興需要進行大量處理。我得到它的唯一方法是,如果我這樣做:Groovy XMLSlurper appendNode - 如何強制它生效?

... 
labDoc = new XmlSlurper().parseText(serializeXml(labDoc)) 
... 
def String serializeXml(GPathResult xml){ 
XmlUtil.serialize(new StreamingMarkupBuilder().bind { 
     mkp.declareNamespace("lab", "www.myco.com/LabDocument") 
     mkp.yield labDoc 
    }) 
} 

每次我追加一個新的節點。一定有更好的方法!誰能幫忙?

+0

那麼你使用'XmlSlurper'作爲你的應用程序的模型嗎?爲什麼不使用slurper將初始數據轉化爲某種更正式的結構(元素列表等),處理這些數據,然後在完成時將其寫成XML?還是有我失蹤的東西? –

+0

我該怎麼做?仍然通過Groovy?或JDOM或其​​他... – Mark

回答

0

XMLParser將是一個更好的選擇,因爲它允許即時反饋插入的節點。

+0

我不想放棄通過slurper提供的所有好處......我不相信Groovy的XML修改支持是如此笨拙!但我一直無法找到解決方案。 – Mark