0

申し訳ありませんが、これを再度投稿していますが、多くの要件が変更されており、アドバイスが必要です.
私の最初の入力ファイルは

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 に渡す方法を教えてください。これらのファイルのいずれにもキーはありません。

4

1 に答える 1