使用多行记录解析XML

时间:2008-10-06 00:28:37

标签: xml grails groovy

我想以下面的格式获取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()

3 个答案:

答案 0 :(得分: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()
}

答案 1 :(得分:0)

如果您可以指定DTD或类似的,并且您的XML解析器服从它,我认为您可以将片段元素的内容指定为CDATA并始终按原样获取。

答案 2 :(得分:0)

尝试将xml:space="preserve"属性添加到<snippet>元素。