2010-07-20 24 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