xmldir
概要
xmldir : ディレクトリタグの絶対パスを指定して、XMLデータをフィールド
形式に変換する。
書式
Usage : xmldir
/<DirTag1>/<DirTag2>/.../<DirTagN> <xmlfile>
Option : -c<n>
Version : Thu Oct 25 14:00:28 JST 2018
<説明>
ディレクトリタグの絶対パスを指定して、絶対パスとすべてのサブツリー
の項目、属性、値を出力します。出力は末端のファイルパスに対して
1行出力されます。
-c オプションで、指定パスのインデックスが出力されます。
N 階層のパスの場合、インデックスはN個となり、タグが繰り返される
とインデックスはインクリメントされます。上位のタグがインクリメント
された場合、下位のタグのインデックスは1にリセットされます。
-c<n> の場合、インデックスは前0埋めn桁の数字になります。
入力ファイルはxbコマンドで整形されたXMLファイルを前提としています。
<例1> 単純な例
$ cat xml
<dir1 id="A">
<dir2 id="B">
<day>23/Jul.2015</day>
<day>24/Jul.2015</day>
</dir2>
<dir2 id="C">
<day>25/Jul.2015</day>
<day>26/Jul.2015</day>
</dir2>
</dir1>
$ xmldir /dir1/dir2 xml
dir1 id A dir2 id B day 23/Jul.2015
dir1 id A dir2 id B day 24/Jul.2015
$ xmldir /dir1/dir2 xml
dir1 id A dir2 id B day 23/Jul.2015
dir1 id A dir2 id B day 24/Jul.2015
dir1 id A dir2 id B day 25/Jul.2015
dir1 id A dir2 id C day 26/Jul.2015
$ xmldir -c3 /dir1/dir2 xml
001 001 dir1 id A dir2 id B day 23/Jul.2015
001 001 dir1 id A dir2 id B day 24/Jul.2015
001 002 dir1 id A dir2 id C day 25/Jul.2015
001 002 dir1 id A dir2 id C day 26/Jul.2015
<例2> 実用的な例
$ cat xml
<dir1>
<dir2 id="0">
<attributes>
<dir4 id="X">
<header1>xxxx</header1>
<header2>yyyy</header2>
</dir4 id="X">
</attributes>
</dir2>
<dir2 id="1">
<attributes>
<data>a</data>
<data>b</data>
</attributes>
<attributes>
<data>c</data>
</attributes>
</dir2>
</dir1>
<dir1>
<attributes>
<data>c</data>
</attributes>
</dir2>
</dir1>
<dir1>
<dir2 id="2">
<attributes>
<data>d</data>
</attributes>
<attributes>
<data>e</data>
</attributes>
<attributes>
<data>f</data>
</attributes>
</dir2>
</dir1>
$ xmldir -c3 /dir1/dir2/attributes xml
001 001 001 dir1 dir2 id 0 attributes dir4 header1 xxxx
001 001 001 dir1 dir2 id 0 attributes dir4 header2 yyyy
001 002 001 dir1 dir2 id 1 attributes data a
001 002 001 dir1 dir2 id 1 attributes data b
001 002 002 dir1 dir2 id 1 attributes data c
002 001 001 dir1 dir2 id 2 attributes data d
002 001 002 dir1 dir2 id 2 attributes data e
002 001 003 dir1 dir2 id 2 attributes data
f