目次

XML子要素の展開例1

2023-11-29
行方向の展開と列方向への展開サンプル2例組み込み

希望の結果

custommersの子要素群を行方向に、optsの子要素群を列方向に展開する。

この例だと、

入力XML 出力(CSV想定)
<masterdata>
  <recs>
      <rec>
        <prodid>1000</prodid>
        <prodname>prod A</prodname>
        <custommers>
          <custommer><name>cust 01</name><opts><opt>opt-A</opt></opts>
                            <addr>addr 1</addr></custommer>
          <custommer><name>cust 02</name><opts><opt>opt-A</opt>
                                               <opt>opt-B</opt></opts>
                                         <addr>addr 2</addr></custommer>
          <custommer><name>cust 10</name><opts><opt>opt-A</opt>
                                               <opt>opt-C</opt></opts>
                                         <addr>addr 10</addr></custommer>
        </custommers>
      </rec>
      <rec>
        <prodid>1100</prodid>
        <prodname>prod B</prodname>
        <custommers>
          <custommer><name>cust 02</name><opts></opts>
                                         <addr>addr 2</addr></custommer>
          <custommer><name>cust 20</name><addr>addr 20</addr></custommer>
        </custommers>
      </rec>
      <rec>
        <prodid>9000</prodid>
        <prodname>prod Z</prodname>
        <custommers>
        </custommers>
      </rec>
      <rec>
        <prodid>2000</prodid>
        <prodname>prod F</prodname>
        <custommers>
          <custommer><name>cust 52</name><opts><opt>opt-A</opt>
                                               <opt>opt-B</opt>
                                               <opt>opt-C</opt></opts>
                                         <addr>addr 52</addr></custommer>
          <custommer><name>cust 55</name><opts></opts></custommer>
        </custommers>
      </rec>
  </recs>
</masterdata>

定義

Get data from XML 1

要素recがレコードに変換されるので4レコード生成される事になる。



行整列 1


Get data from XML 2

XPath指定の意のようで、相対パス指定等を利用できる。




行整列 2


マージ結合

Tipsにも記述があるけど入力は適切なソートが適用されている必要がある。

XML 1 LEFT OUTER JOIN XML 2 の意。キーはprodid。

選択/名前変更

キー項目名が(この例だとprodid)が必ず使用される前提を付ける事ができるなら、マージ結合で生成される prodid_1 は削除できる。