문제

아래 형식으로 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> 집단.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top