Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl中的XML差异_Xml_Perl_Xmldiff - Fatal编程技术网

Perl中的XML差异

Perl中的XML差异,xml,perl,xmldiff,Xml,Perl,Xmldiff,我有两个XML文件,一个是旧的XML文件,另一个是新的XML文件。我想打印文件之间的差异 我想要这样的输出: 如果内容更改为B.com,则为更新的数据 < L> >P>如果属性变化考虑为新增加的数据 示例输出: UPDATED DATA: in the "joindef" in the entry name = "Hardware" in the option name ="Graduation" content Degree was changed to B.com NEWLY ADDE

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

我想要这样的输出:

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

  • < L> >P>如果属性变化考虑为新增加的数据

示例输出:

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>
#主块
#子区块1
............
............
............
理工学士
年份=2011年
理工硕士
50
度
年份=2011年
马华
100
#子区块3
............
............
............
新XML文件:

<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>
#主块
#子区块1
............
............
............
理工学士
年份=2011年
理工硕士
50
印度
B.com
年份=2011年
马华
100
B.com
年份=2011年
马华
150
#子区块3
............
............
............

我是Perl新手。有人能帮我吗?

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

考虑到CPAN中可用于此目的的模块数量,Perl对XML非常友好

在这种情况下,我将使用模块

假设现在有两个具有键值对的哈希


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

如果您的英语不完美,也可以:我们会考虑您的情况,并尽力理解。但请不要通过拼凑缩略语使它变得比需要的更难。我以前从未见过b/w的意思,如果您显示的示例输出与输入的XML数据相对应,这将非常有帮助。无论是
Acro-Read
还是
LS\u-SYSTEM
都不会出现在输入数据的任何地方,那么它是如何到达输出文件的呢?