0

我在这样的 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 配置,然后将其插入。

“WapRules”是“WapRule”元素的列表,所以我尝试将其映射到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"]
    }
]

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

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

但输出只有这个:[:]

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

4

1 回答 1

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 对象列表,每个对象都放在大括号 {} 中”)。

我希望这对其他人有帮助。

于 2012-12-21T18:07:24.210 回答