从我的XML文件中删除Perldata,hashref

问题描述 投票:0回答:1

我有一个示例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>
java regex perl hash href
1个回答
0
投票

我在这方面使用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);

    }
    ";
© www.soinside.com 2019 - 2024. All rights reserved.