将XML转换为等效的groovy配置

时间:2012-12-21 17:11:59

标签: xml groovy configuration-files

我在这样的XML文档中有一些测试配置:

<WapRules>
    <WapRule>
        <RuleTypeId>1</RuleTypeId>
        <IsExact>false</IsExact>
        <Keywords>
            <Keyword>gmail</Keyword>
        </Keywords>
    </WapRule>
    <WapRule>
        <RuleTypeId>2</RuleTypeId>
        <IsExact>false</IsExact>
        <Keywords>
            <Keyword>test</Keyword>
        </Keywords>
    </WapRule>
    <WapRule>
        <RuleTypeId>2</RuleTypeId>
        <IsExact>true</IsExact>
        <Keywords>
            <Keyword>srs</Keyword>
            <Keyword>sample</Keyword>
        </Keywords>
    </WapRule>
</WapRules>

我想将其表示为groovy config,然后将其插入。

“WapRules”是“WapRule”元素的列表,所以我尝试将其映射到这样的Config.groovy file

wap_rules = [
    {
        rule_type_id = 1
        is_exact = false
        keywords = ["gmail"]
    },
    {
        rule_type_id = 2
        is_exact = false
        keywords = ["test"]
    },
    {
        rule_type_id = 2
        is_exact = true
        keywords = ["srs", "sample"]
    }
]

现在我在配置中啜饮并尝试访问元素:

def cfg = new ConfigSlurper().parse(Config)
println cfg.wap_rules[0].rule_type_id

但输出只有:[:]

那么如何访问cfg.wap_rules[0]内的成员呢?我将XML结构映射到Config.groovy有什么问题吗?

1 个答案:

答案 0 :(得分:0)

得到了答案。我没有正确映射XML文档。

以下是我应该如何编写我的Config.groovy:

wap_rules = [
    [
        rule_type_id : 1,
        is_exact : false,
        keywords : ["gmail"]
    ],
    [
        rule_type_id : 2,
        is_exact : false,
        keywords : ["test"]
    ],
    [
        rule_type_id : 2,
        is_exact : true,
        keywords : ["srs", "sample"]
    ]

]

wap_rules现在是一个地图列表,每个地图的元素都可以轻松访问。

现在我确实可以println cfg.wap_rules[0].rule_type_id,输出确实是1

我猜我在编写错误的Config.groovy时,对JSON表示(即“我需要一个JSON对象列表,每个都在大括号{}”中)过于宽松。

我希望这有助于其他人。