Разница XML в Perl

У меня есть два 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 ответ

В Perl доступны модули для преобразования данных XML в хеш Perl.

Perl чрезвычайно удобен для XML, учитывая количество модулей, доступных в CPAN для этого.

В этом случае я бы использовал модуль XML::Hash.

Учитывая, что теперь у вас есть два хэша с парами ключ-значение.

Вы можете перебирать старые ключи хеша, искать значения в новом хеше и распечатывать результаты по мере необходимости.

Другие вопросы по тегам