繁体   English   中英

Groovy MarkupBuilder:如何创建标记和附加字符串

[英]Groovy MarkupBuilder : How to create markup and append string

我正在使用Groovy MarkupBuilder创建一些XML。

在我的场景中,我得到了一个xml字符串,它本质上是xml文档的主体,然后我想用其他东西将其包围。

像这样...

def xmltext = '''<node><name short="yes">tim</name><fun>maybe</fun></node>'''
def body = new XmlSlurper(false,false).parseText( xmltext )

def writer = new StringWriter()
def xml = new MarkupBuilder(writer)

xml.mkp.xmlDeclaration version: '1.0', encoding: 'UTF-8'
xml.'cre:InputParamters'('xmlns:cre': 'http://xmlns.oracle.com/apps/ar/soaprovider/plsql/ar_invoice_api_pub/create_single_invoice/') {
    xml.'cre:P_P_TRX_HEADER_TBL' {
        xml.'cre:P_TRX_HEADER_TBL_ITEM' {
            map 'cre:TRX_HEADER_ID', '',xml
            map 'cre:TRX_DATE', requestPayload?.invoiceDate, xml
            map 'cre:TRX_CURRENCY', requestPayload?.currencyCode, xml
            map 'cre:TRX_CLASS', 'INV', xml
            map 'cre:CUST_TRX_TYPE_ID', '1034', xml
            map 'cre:BILL_TO_CUSTOMER_ID', '147055', xml
        }
    }
    <<APPEND ELEMENTS FROM XML STRING HERE>>
}

private map (Object field, Object value, MarkupBuilder xml) {
    if (value) {
        xml."$field"(value)
    }
}

return writer.toString()

有人可以帮我“从XML STRING到这里添加元素”,以及如何为我工作吗?

谢谢

这是更改后的脚本:

请注意,您已经使用了一些变量来获取值。 为了说明我使用了固定值,您可以在固定值以下替换它。

import groovy.xml.*
def xmltext = '''<node><name short="yes">tim</name><fun>maybe</fun></node>'''

def builder = new StreamingMarkupBuilder()
builder.encoding = 'UTF-8'
def xml = builder.bind {
    mkp.xmlDeclaration()    
    namespaces << [cre:'http://xmlns.oracle.com/apps/ar/soaprovider/plsql/ar_invoice_api_pub/create_single_invoice/']
    cre.InputParamters{
        cre.P_P_TRX_HEADER_TBL {
            cre.P_TRX_HEADER_TBL_ITEM {
                cre.TRX_HEADER_ID ('')
                cre.TRX_DATE ('2017-02-17')
                cre.TRX_CURRENCY( 'USD')
                cre.TRX_CLASS('INV')
                cre.CUST_TRX_TYPE_ID( '1034')
                cre.BILL_TO_CUSTOMER_ID( '147055')
            }
        }
        mkp.yieldUnescaped xmltext
    }
}

println XmlUtil.serialize(xml)

您可以尝试很快的在线演示

产量

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM