0

.csv ファイルへの書き込み中に、(データの可用性に関係なく) オプションの XML 要素を常に出力する必要があるという要件があります。

XML ファイル形式

<entries> 
  <countryCode>123</countryCode>  
  <adminDataMap> 
    <testAccount>True</testAccount>  
    <code>11</code> 
  </adminDataMap>  
  <privateMap> 
    <email>abc@abc.com</email>  
    <cancelReason>Not interested</cancelReason> 
  </privateMap> 
</entries>

ここで 'entries' ルート要素 'cancelReason'、'testAccount' はオプションの要素で、データが存在する場合にのみ使用できます。

つまり、これらの「オプション」フィールドを持つレコードもあれば、持たないレコードもあります。

これらすべての要素を抽出する XQuery を作成しました

let $entries := /root/entries
return
    for $entry in $entries
    return
    <entries>
    {
        $entry/*,
        $entry/privateMap/email,
        $entry/privateMap/cancelReason,
        $entry/adminDataMap/code,
        $entry/adminDataMap/testAccount
    }
    </entries>

私の要件は、すべての必須要素とオプション要素を OUTPUT として抽出することです。つまり、出力メタデータは常に同じままです。オプションの「cancelReason」に値がない場合は、空白/null として入力されます [そのようなもの]

これを実現するために記述できる XQUERY のオプションを教えてください。

4

2 に答える 2

0

Try this Xquery:

let $entries := $root/entries

for $entry in $entries

return <OUTPUT>
{<mandatory>{$entry//countryCode}
{<adminDataMap>{$entry//adminDataMap/code}</adminDataMap>}
{$entry//privateMap/email}</mandatory>}
{<optional>{<testAccount>{data($entry/adminDataMap/testAccount)}</testAccount>}
<cancelReason>{data($entry/privateMap/cancelReason)}</cancelReason></optional>
}</OUTPUT>

that gives you mandatory and optional elements separately for every entry.

于 2016-06-29T09:06:23.637 に答える