如何从groovy中编码的base64消息wsdl中获取值?

问题描述 投票:0回答:1

我想从消息 wsdl xml 中获取特定值,如下所示

<Message name="InvestorAcctStatement">
     <Field name="ExtRef">180120120000331</Field>
     <Field name="SeqNum">000001</Field>
     <Field name="AC">0000000800100007182</Field>
     <Field name="CurCod">IDR </Field>
     <Field name="ValDate">20090703</Field>
     <Field name="OpenBal">87928063.0000</Field>
     <List name="StatLine">
        <Record name="StatLine">
                    <Field name="ExtRef">180120120000331</Field>
                     <Field name="TrxType">N9293</Field>
                     <Field name="DC">C</Field>
                    <Field name="CashVal">10000.0000</Field>
                    <Field name="Description1">0800100007182</Field>
                    <Field name="Description2">959508221001000</Field>
                    <Field name="Description3">324242</Field>
        </Record>
    </List>
    <Field name="CloseBal">87938063.0000</Field>
     <Field name="Notes">DR  0640100002095 KE 0800100007182      </Field>
</Message>

groovy 如何从该 xml 中获取特定值?

我已经尝试使用此代码

String dbresponse = '''
<Message name="InvestorAcctStatement">
     <Field name="ExtRef">180120120000331</Field>
     <Field name="SeqNum">000001</Field>
     <Field name="AC">0000000800100007182</Field>
     <Field name="CurCod">IDR </Field>
     <Field name="ValDate">20090703</Field>
     <Field name="OpenBal">87928063.0000</Field>
     <List name="StatLine">
        <Record name="StatLine">
                    <Field name="ExtRef">180120120000331</Field>
                     <Field name="TrxType">N9293</Field>
                     <Field name="DC">C</Field>
                    <Field name="CashVal">10000.0000</Field>
                    <Field name="Description1">DR  0640100002095 KE 0800100007182      </Field>
                    <Field name="Description2">959508221001000                         </Field>
                    <Field name="Description3">                                        </Field>
        </Record>
    </List>
    <Field name="CloseBal">87938063.0000</Field>
     <Field name="Notes">DR  0640100002095 KE 0800100007182      </Field>
</Message>

'''
xml = new XmlParser().parseText(dbresponse)

xml.each { 
    if(it.@name == 'ExtRef') {
        println it
    }
}

当我运行它时返回

Field[attributes={name=ExtRef}; value=[180120120000331]]

我不知道如何调用具体的值,特别是像XML代码上的字段名称CashVal 提前致谢。

java xml grails groovy wsdl
1个回答
1
投票

为了打印代码中的值,请尝试以这种方式修改循环:

xml.each {
    if(it.@name == 'ExtRef') {
        println "Name: ${it.@name}"
        println "Value: ${it.text()}"
    }
}

关于CashVal,这里是非常粗略的实现:

xml.each {
    if (it.@name == 'StatLine') {
        it.'*'.'*'.each {
            if (it.@name == 'CashVal') {
                def cashVal = new BigDecimal(it.text())
                println "cashVal = $cashVal"
            }
        }
    }
}

仅供您参考。

© www.soinside.com 2019 - 2024. All rights reserved.