2010-07-20 6 views
3

콘솔의 외부 피드에서 오는 xml을 인쇄하려고합니다. 내가그루비 노드 자식 값 인쇄

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

+0

먼저 xml 객체의 클래스를 확인하십시오 (log.debug (xml.class) 출력) – Oleksandr

+0

이것은 errors.GrailsExceptionResolver 예외입니다 : groovy.lang.MissingMethodException : 메소드의 서명이 없습니다 : groovy.util.XmlParser.parseText()가 적용 가능합니다 인수 유형 : xml은 외부 웹 서비스 – Paras

답변

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

+0

내 대답은 그 때 작동 할 것입니다. XmlSlurper.parseText는 NodeChild 객체를 반환합니다. – stan229

+0

예, 작동합니다. 감사 – Paras

0

노력이

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

Olexandr님께 요청을 받고 있기 때문에 NodeChild 유형입니다.이 또한 작동하지 않습니다. 동일한 출력을 제공합니다. – Paras