2010-07-20 52 views
3

我想打印來自控制檯上外部源的xml。 當我做打印groovy nodechild值

log.debug "${xml}" 

我得到的控制檯,但沒有開始和結束標記XML值。例如

<fruits> 
    <fruit1>apple</fruit1> 
    <fruit2>orange</fruit2> 
</fruits> 

只是打印串接一個其他後appleorange 就值。什麼是最好的價值來處理它。我試過這個Best way to pretty print XML response in grails,但我在parseText()得到異常。我不知道爲什麼,因爲我認爲傳入的xml是有效的。

更新:變量xml的類型是Groovy的NodeChild。

+0

什麼是例外? – Jon 2010-07-20 22:56:45

+0

首先檢查xml對象的類(log.debug(xml.class)輸出) – Oleksandr 2010-07-21 09:10:44

+0

這是異常errors.GrailsExceptionResolver:groovy.lang.MissingMethodException:沒有方法的簽名:groovy.util.XmlParser.parseText()適用於參數類型: xml是NodeChild類型,因爲這個xml我正在從外部web服務請求 – Paras 2010-07-23 15:22:45

回答

5

你可以做以下的,如果你的XML是簡單,它應該滿足您的需求:

`

def xml = new XmlSlurper().parseText(xmlString) 
def result = new StreamingMarkupBuilder().bind{ 
      mkp.yield xml 
      } 
log.debug result as String 

`

+0

它是一個簡單的XML註釋。原來的問題很混亂。我會更新它。變量xml實際上是一個NodeChild對象 – Paras 2010-07-30 03:51:17

+0

我的答案會工作。 XmlSlurper.parseText返回一個NodeChild對象 – stan229 2010-07-30 19:24:49

+0

是的,它的工作原理。謝謝 – Paras 2010-08-02 20:54:59

0

試試這個

def writer = new StringWriter() 
xml.writeTo(writer) 
log.debug writer.toString() 
+0

嗨Olexandr,這不起作用。給出相同的輸出 – Paras 2010-07-23 15:21:18