У меня есть Perl-скрипт для преобразования приведенного ниже XML-файла в хеш:
<university>
<name>svu</name>
<location>ravru</location>
<branch>
<electronics>
<student name="xxx" number="12">
<semester number="1"subjects="7" rank="2"/>
</student>
<student name="xxx" number="15">
<semester number="1" subjects="7" rank="10"/>
<semester number="2" subjects="4" rank="1"/>
</student>
<student name="xxx" number="16">
<semester number="1"subjects="7" rank="2"/>
<semester number="2"subjects="4" rank="2"/>
</student>
</electronics>
</branch>
</university>.
.
.
.
.
.
<data>
<student name="msr" number="1" branch="computers" />
<student name="ksr" number="2" branch="electronics" />
<student name="lsr" number="3" branch="EEE" />
<student name="csr" number="4" branch="IT" />
<student name="msr" number="5" branch="MEC" />
<student name="ssr" number="6" branch="computers" />
<student name="msr" number="1" branch="CIV" />
.............................
..............................
.....................
</data>
Как создать хеш-таблицу для элементов данных с именем и номером в качестве ключа, а ветвьзначение в этом хеше.Мне это нужно, потому что у некоторых студентов одинаковые имена, а у некоторых студентов одинаковые номера.
Используя этот хэш-ключ, я должен найти в университетском узле студента, если он найден, и распечатать название филиала каждого студента.
Я написал какой-то скрипт на XML::Simple
, но не могу создать хеш.
#!/usr/bin/perl
use warnings;
use strict;
use Data::Dumper;
use XML::Simple;
my $xml = new XML::Simple;
my $data = $xml->XMLin("data.xml", forcearray => [ 'student' , 'semister' ],
KeyAttr => { student => "+Name" } );
print Dumper($data);
с помощью дампера данных. Я печатаю информацию о дыре в XML.но мне нужно печатать только элементы Data Node, пожалуйста, помогите мне, как это сделать.