문제
아래 형식으로 XML을 가져 와서 각 코드 레코드를 내의 도메인 객체에로드하고 싶습니다. BootStrap.groovy
. 각 코드 스 니펫의 형식을 보존하고 싶습니다.
XML
<records>
<code>
<language>Groovy</language>
<snippet>
println "This is Groovy"
println "A very powerful language"
</snippet>
</code>
<code>
<language>Groovy</language>
<snippet>
3.times {
println "hello"
}
</snippet>
</code>
<code>
<language>Perl</language>
<snippet>
@foo = split(",");
</snippet>
</code>
</records>
도메인 객체
Code {
String language
String snippet
}
bootstrap.groovy
new Code(language l, snippet: x).save()
해결책
대략적으로 다음과 같은 것 :
def CODE_XML = '''
<records>
<code>
<language>Groovy</language>
<snippet>
println "This is Groovy"
println "A very powerful language"
</snippet>
</code>
<code>
<language>Groovy</language>
<snippet>
3.times {
println "hello"
}
</snippet>
</code>
<code>
<language>Perl</language>
<snippet>
@foo = split(",");
</snippet>
</code>
</records>
'''
def records = new XmlParser().parseText(CODE_XML)
records.code.each() { code ->
new Code(language: code.language, snippet: code.snippet).save()
}
다른 팁
Specity A DTD 또는 이와 유사하고 XML 파서가 순종 할 수 있다면 스 니펫 요소의 내용을 CDATA로 지정하고 항상 그대로 얻을 수 있다고 생각합니다.
추가 해보세요 xml:space="preserve"
속성 <snippet>
집단.
제휴하지 않습니다 StackOverflow