Perl中的XML差异

时间:2014-06-18 15:11:53

标签: xml perl xmldiff

我有两个XML文件,一个是旧的XML文件,另一个是新的XML文件。我想打印文件之间的差异

我想要这样的输出:

  • 如果内容已更改为B.com,则为更新数据

  • 如果属性更改被视为新添加的数据

示例输出:

UPDATED DATA:
in the "joindef" in the entry name = 
"Hardware" in the option name ="Graduation" content Degree was changed to B.com
NEWLY ADDED DATA:
in the "join_def" entry name "VHDL" is added.
in the "join_def" in the entry name "Software" option name "Location" is added.

OLDXML文件:

<ls_new>#mainblock

<new_def>#subblock1
............
............
............
</new_def>

<join_def>
    <entry name="Software">
        <option name="Graduation">B.tech</option>
        <member>year=2011</member>
        <option name="PostGraduation">M.tech</option>
        <option name="JobNum">50</option>
    </entry>
    <entry name="Hardware">
        <option name="Graduation">Degree</option>
        <member>year=2011</member>
        <option name="PostGraduation">MCA</option>
        <option name="JobNum">100</option>
    </entry>
</join_def>
<old_def>#subblock3
............
............
............
</old_def>

</ls_new>

NEWXML文件:

<ls_new>#mainblock

<new_def>#subblock1
............
............
............
</new_def>

<join_def>
    <entry name="Software">
        <option name="Graduation">B.tech</option>
        <member>year=2011</member>
        <option name="PostGraduation">M.tech</option>
        <option name="JobNum">50</option>
        <option name="Location">india</option>
    </entry>
    <entry name="Hardware">
        <option name="Graduation">B.com</option>
        <member>year=2011</member>
        <option name="PostGraduation">MCA</option>
        <option name="JobNum">100</option>
    </entry>
    <entry name="VHDL">
        <option name="Graduation">B.com</option>
        <member>year=2011</member>
        <option name="PostGraduation">MCA</option>
        <option name="JobNum">150</option>
    </entry>
</join_def>
<old_def>#subblock3
............
............
............
</old_def>

</ls_new>

我是Perl的新手。有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:-1)

Perl中有一些模块可供您将XML数据转换为Perl哈希。

考虑到CPAN中可用的模块数量,Perl非常适合XML。

在这种情况下,我会使用XML::Hash模块。

鉴于您现在有两个具有键值对的哈希值。

您可以迭代旧的哈希键,在新哈希中搜索值并根据需要打印结果。