【发布时间】:2011-12-21 10:31:09
【问题描述】:
我有一个 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 信息。但我只需要打印数据节点元素请帮助我如何做到这一点。
【问题讨论】:
标签: perl