【问题标题】:XML Difference in PerlPerl 中的 XML 差异
【发布时间】:2014-06-18 15:11:52
【问题描述】:

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

我想要这样的输出:

  • 如果内容将 Degree 更改为 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 的新手。谁能帮我解决这个问题?

【问题讨论】:

  • 您的英语不完美也没关系:我们会为您考虑并尽力理解。但是请不要通过编造缩写来使其变得比需要的更困难。我从没见过 b/w 曾经表示 between before
  • 如果您显示的示例输出与输入 XML 数据相对应,这将非常有帮助。 Acro ReadLS_SYSTEM 都没有出现在输入数据的任何地方,那么它是如何到达输出文件的呢?

标签: xml perl xmldiff


【解决方案1】:

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

鉴于 CPAN 中可用的模块数量,Perl 对 XML 非常友好。

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

鉴于您现在有两个带有键值对的散列。

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

【讨论】:

    猜你喜欢
    • 2014-08-08
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 2013-09-02
    • 2011-05-13
    • 2012-08-11
    相关资源
    最近更新 更多