我有一个示例XML文件,如下,我想从输出中删除hashref,Perldata以及项键值。我主要关心的是:
我有很多带有不同变量的如下XML文件,我想使用代码自动删除不必要的标签,而无需在Perl代码中引入每个标签?
输入
<perldata>
<hashref memory_address="0xa7ab680">
<item key="employee">
<arrayref memory_address="0xa7dc1a8">
<item key="0">
<hashref memory_address="0xa7ab584">
<item key="age">
<hashref memory_address="0xa7ab338">
<item key="dob">10-02-2000</item>
</hashref>
</item>
<item key="department">
<hashref memory_address="0xa7ab1d0">
<item key="departmentname">Operations</item>
<item key="title">Manager</item>
</hashref>
</item>
<item key="location">
<hashref memory_address="0xa7ab068">
<item key="town">
<hashref memory_address="0xa7aaffc">
<item key="county">East</item>
<item key="name">Auchinleck</item>
</hashref>
</item>
</hashref>
</item>
<item key="name">
<hashref memory_address="0xa7ab518">
<item key="forename">John</item>
<item key="surname">Down</item>
</hashref>
</item>
<item key="************">M</item>
</hashref>
</item>
<item key="1">
<hashref memory_address="0xa7aae64">
<item key="age">
<hashref memory_address="0xa7aac90">
<item key="dob">05-03-2000</item>
</hashref>
</item>
<item key="department">
<hashref memory_address="0xa78c490">
<item key="departmentname">Internet</item>
<item key="title">Watcher</item>
</hashref>
</item>
<item key="location">
<hashref memory_address="0xa798da4">
<item key="town">
<hashref memory_address="0xa798d38">
<item key="county">South</item>
<item key="name">BB</item>
</hashref>
</item>
</hashref>
</item>
<item key="name">
<hashref memory_address="0xa7aadf8">
<item key="forename">Cr</item>
<item key="surname">Moral</item>
</hashref>
</item>
<item key="************">M</item>
</hashref>
</item>
</arrayref>
</item>
</hashref>
</perldata>
我的首选输出是:
<?xml version="1.0" encoding="UTF-8"?>
<data>
<employee>
<value name="************">M</value>
<age>
<dob>01-04-2000</dob>
</age>
<department>
<departmentname>Operations</departmentname>
<title>Manager</title>
</department>
<location>
<town>
<county>Somewhere</county>
<name>Someplace</name>
</town>
</location>
<name>
<forename>John</forename>
<surname>Down</surname>
</name>
</employee>
<employee>
<value name="************">M</value>
<age>
<dob>12-12-2000</dob>
</age>
<department>
<departmentname>Internet</departmentname>
<title>Researcher</title>
</department>
<location>
<town>
<county>Somewhere</county>
<name>Othertown</name>
</town>
</location>
<name>
<forename>Jane</forename>
<surname>Doe</surname>
</name>
</employee>
</data>
我在这方面使用Tap3Edit Decoder,我的XML输出文件包含许多不必要的标签,例如perlData,href,...。我想查看共享的XML输出。
#!/usr/bin/perl -w
use strict;
use warnings;
use Data::Dumper;
use XML::Dumper;
use TAP3::Tap3edit;
$Data::Dumper::Indent=1;
$Data::Dumper::Useqq=1;
my $dump = new XML::Dumper;
use File::Basename;
my $perl='';
my $xml='';
my $tap3 = TAP3::Tap3edit->new();
foreach my $file(glob 'CD*')
{
my $files= basename($file);
my $filename=$files.".xml\n";
print $filename;
$tap3->decode($files) || die $tap3->error;
$perl = $tap3->structure;
$dump->pl2xml($perl, $filename);
}
";