Frage

Ich möchte XML-Daten in das format unten und laden Sie jede code-Datensatz in einer Domäne Objekt in meinem BootStrap.groovy.Ich möchte die Formatierung beibehalten werden jedes code-snippet.

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>

Domain-Objekt

Code {
    String language
    String snippet
}

BootStrap.groovy

new Code(language l, snippet: x).save()
War es hilfreich?

Lösung

in etwa so etwas wie dieses:

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()
}

Andere Tipps

Wenn Sie eine DTD oder ähnlich und XML-Parser gehorcht specity kann, glaube ich Ihnen, den Inhalt des Snippets Element angeben können CDATA zu sein und bekommen es immer, wie sie ist.

Versuchen xml:space="preserve" Attribut Hinzufügen von Elementen <snippet>.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top