【发布时间】:2016-01-19 13:38:44
【问题描述】:
<Root>
<Top Name=" ">
<Tag name="ALU">
<in name="PC"/>
<iodirection name="AB"/>
</Tag>
<Tag name=" ">
<in name="CCB"/>
<ou name="PC"/>
<bi name="AB"/>
</Tag>
<Tag name=" ">
<in name="DB"/>
<ou name="DI"/>
<bi name="CCB"/>
</Tag>
<Tag name=" ">
<in name="DI"/>
<ou name="DB"/>
<bi name="CCB"/>
</Tag>
</Top>
</Root>
我不是 Perl 专家,但一些简单的事情我很难弄清楚,其中一项任务就是这样。如您所见,上面的 XML 属性/元素重复了几次,但针对不同的 <in>、<io> 和 <ou> 标签。现在我希望只返回重复的属性/元素并打印一次。
Example : DI
DB
CCB
AB
我的代码 sn-p 是这样的
use strict;
use XML::Simple;
use Data::Dumper;
$xml_1 = XMLin('./tmp.xml');
my $root_top = $xml_1->{Top};
my $mod_top = $root_top1->{Tag};
my @mod = keys %$mod_top;
foreach my $mods ( values %$mod_top ) {
my $temp = shift(@mod);
print XST_FILE "$temp u_$temp(\n";
my $in_mo = $modules->{in};
my @in_1 = keys %$in_mo;
foreach my $name_1 ( values %$in_mo ) {
my $inn = shift(@in_1);
if ( $inn =~ /\bname\b/ ) {
print " \.$name_1\($name_1\)\,\n";
}
else {
print " \.$in\($in\)\,\n";
}
}
PS:如果只能在XML::Simple 中修改,我将不胜感激。虽然XML::Simple is discouraged,他并不正义,但他是我目前用来完成这项任务的人
【问题讨论】:
-
你的问题标题很糟糕。请edit您的问题并更改标题以说出您想做什么。点击诱饵在这里不起作用。我也不明白你真正想要做什么。另外,你有
use strict很好,但是你的代码不会编译。请更改代码并使其工作,并在您使用时缩进。 -
“我的代码 sn-p 是这样的” 你为什么发布类似你的实际代码?您所展示的内容无法编译,如果我们正在处理与真实问题不同的问题,我们没有机会帮助您