ベンダー仕様に準拠するために必要なものを出力するための Groovy スクリプトを入手するのに苦労しています。最終的には、JsonSlurper に静的な行ではなくファイルを設定しますが、簡単にするためにサンプルの JSON を用意しました。GroovyConsole で次のコードを実行すると、指定した名前空間が UserReference ノードと Bal ノードに含まれている理由を特定できないようです。どんな助けでも大歓迎です!
import groovy.xml.*
import groovy.json.JsonSlurper
def queryResultsResponseString =
'''
{
"rows": [
{
"account_num": 123,
"name": "Mr Bigbucks",
"balance": 83.23
},
{
"account_num": 8675309,
"name": "Johnny",
"balance": 45.75
}
]
}
'''
def jsonResp = (new JsonSlurper()).parseText(queryResultsResponseString);
def xml = new groovy.xml.StreamingMarkupBuilder()
xml.encoding = "UTF-8"
def prints = xml.bind{
mkp.xmlDeclaration()
mkp.declareNamespace(p1 :"com/my/namespace/woot" + "\"" + " " + "xsi:schemaLocation=\"http://www.w3.org/2001/XMLSchema-instance")
'p1:BatchEidvPersonSearch' {
jsonResp.rows.each{row ->
EidvPersonSearchRequest {
InternalId('Internal Id')
UserReference('CLEAR ID Confirm Person Search')
criteria {
acctNum row.account_num
custName row.name
bal row.balance
}
}
}
}
}
println XmlUtil.serialize(prints).replaceAll('"','"')
// ---Results Here ---
<?xml version="1.0" encoding="UTF-8"?><p1:BatchEidvPersonSearch xmlns:p1="com/my/namespace/woot" xsi:schemaLocation="http://www.w3.org/2001/XMLSchema-instance">
<EidvPersonSearchRequest>
<InternalId>Internal Id</InternalId>
<UserReference xmlns:p1="com/my/namespace/woot" xsi:schemaLocation="http://www.w3.org/2001/XMLSchema-instance">CLEAR ID Confirm Person Search</UserReference>
<criteria>
<acctNum>123</acctNum>
<custName>Mr Bigbucks</custName>
<bal xmlns:p1="com/my/namespace/woot" xsi:schemaLocation="http://www.w3.org/2001/XMLSchema-instance">83.23</bal>
</criteria>
</EidvPersonSearchRequest>
<EidvPersonSearchRequest>
<InternalId>Internal Id</InternalId>
<UserReference xmlns:p1="com/my/namespace/woot" xsi:schemaLocation="http://www.w3.org/2001/XMLSchema-instance">CLEAR ID Confirm Person Search</UserReference>
<criteria>
<acctNum>8675309</acctNum>
<custName>Johnny</custName>
<bal xmlns:p1="com/my/namespace/woot" xsi:schemaLocation="http://www.w3.org/2001/XMLSchema-instance">45.75</bal>
</criteria>
</EidvPersonSearchRequest>
</p1:BatchEidvPersonSearch>
- - アップデート - - -
ローカルにロードされた 2.2 Groovy Jar に付属の ETL ツールを介してこの Groovy スクリプトを呼び出そうとしていますが、ETL ツールを介してスクリプトを呼び出すと、期待どおりの出力が生成されることに気付きました。だから...アーカイブから2.2 groovyをダウンロードし、groovyコンソールとBAMを使用してスクリプトを呼び出します。バージョン間で何が変わったのかはわかりませんが、出力には間違いなく変更があります。ETL ツールをアップグレードすると、JAR が最新バージョンに更新されるのではないかと思います。2 つのリリース間で何が大きく異なるのか、何か考えはありますか?