申し訳ありませんが、これを再度投稿していますが、多くの要件が変更されており、アドバイスが必要です.
私の最初の入力ファイルは
Root1 TBLA KEY1 COLA A B
Root1 TBLA KEY1 COLB D E
Root1 TBLA KEY3 COLX M N
Root2 TBLB KEY4 COLX M N
Root2 TBLB KEY4 COLD A B
Root3 TBLC KEY5 COLD A B
私の2番目の入力ファイルは
Root1 TBLA KEY6
Root2 TBLB KEY7
Root3 TBLC KEY8
私の3番目の入力ファイルは
Root1 TBLA KEY9
Root1 TBLA KEY10
Root3 TBLC KEY11
基本的にファイル表現は
1) 最初のファイルは古い値と新しい値を表します。1 つ目はルート テーブル、2 つ目は diff がある実際のテーブルです。3 列目はキー値を示します。4番目と5番目は古い価値と新しい価値を表しています。
2) 2 番目のファイルは、db1 のみに存在し、db2 には存在しない主キーを表します。1 つ目はルート テーブル、2 つ目はキーが存在する実際のテーブルです。3 番目の列はキー値を示します
3) 3 番目のファイルは、db1 ではなく db2 のみに存在する主キーを表します。1 つ目はルート テーブル、2 つ目はキーが存在する実際のテーブルです。3 番目の列はキー値を示します
次のように xml 形式で作成される出力
<Data>
<Root1>
<TBLA>
<NEW1>
<KEY>KEY6</KEY>
<NEW1>
<NEW2>
<KEY>KEY9</KEY>
<KEY>KEY10</KEY>
<NEW2>
<MODIFIED>
<KEY name =KEY1>
<COLA>
<oldvalue>A</oldvalue>
<newvalue>B</newvalue>
</COLA>
<COLB>
<oldvalue>D</oldvalue>
<newvalue>E</newvalue>
</COLB>
</KEY>
<KEY name =KEY3>
<COLX>
<oldvalue>M</oldvalue>
<newvalue>N</newvalue>
</COLX>
</KEY>
</MODIFIED>
</TBLA>
</Root1>
<Data>
これは完全な出力ではありません。出力の一部が表示されます誰でもこれを行うための最良の方法を提案できますか. このテキスト ファイルを最初にハッシュのハッシュに変換してから、pltoxml()
. これは理にかなっていますか。これで十分XML::Simple
ですXML::Writer
。
これは私がxmlに取り組んだのは初めてで、どのアプローチが私のソリューションに効率的に役立つかわかりません.
私の要求に対する小さな例をいただければ幸いです。
*入力ファイルは常にルート、次に TBLNAME でソートされます
出力形式
出力には、すべてのルート、そのルート内のすべてのテーブル、およびすべてのテーブルについて、1 つに存在するキーと 2 番目にのみ存在するキーが含まれます。これは、それぞれセクション new1 と new2 にあります。3 番目のセクションには Modified が含まれており、最初の入力ファイルから読み取り、キー値とそのキー値を使用して変更された列 (古い値と新しい値) をリストする必要があります。
XML::Simple を使用する必要がある場合、これらのファイルから hashref を作成し、それを XMLout に渡す方法を教えてください。これらのファイルのいずれにもキーはありません。