簡體   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