1

以下の形式の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()
4

3 に答える 3

1

大まかに次のようなものです。

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()
}
于 2008-10-06T01:28:12.890 に答える
0

DTDなどを指定でき、XMLパーサーがそれに準拠している場合は、スニペット要素のコンテンツをCDATAとして指定し、常にそのまま取得できると思います。

于 2008-10-06T01:36:31.877 に答える
0

要素xml:space="preserve"に属性を追加してみてください。<snippet>

于 2008-10-11T21:35:48.260 に答える