如何将XML :: Simple中的<opt>标记替换为原始标记名称?</opt>

时间:2010-01-13 23:01:44

标签: xml perl xml-simple

我正在使用XML::Simple来编辑XML文件。之后,更新的数据将发送到新的XML文件。但是此过程会生成<opt></opt>标记,并且原始父标记会丢失。我想将<opt>替换为原始标记名称。我该怎么做?

4 个答案:

答案 0 :(得分:3)

您还可以尝试搜索 rootname 选项。另见:

How do I remove the <opt> tag in XML::Simple output?

答案 1 :(得分:2)

KeepRoot。您还应该考虑启用strict mode

#!/usr/bin/perl

use strict; use warnings;

use XML::Simple qw(:strict);
use Data::Dumper;

my $x = XMLin(\*DATA, KeepRoot => 1, ForceArray => 1, KeyAttr => ['the']);

print XMLout($x, KeepRoot => 1, KeyAttr => ['the']);

__DATA__
<this>
<that the="other">This that and the other</that>
</this>

输出:

<this>
  <that the="other">This that and the other</that>
</this>

答案 2 :(得分:0)

在新的xml文件中,您可以使用常规展示来查找要删除的图案,然后替换为您想要的图案,即原始标记。

 @ar="xml file";
 $pat="tag you want to replace";
 $rep="original tag";


 foreach $a (@ar) {
   if ($a =~ s|$pat|$rep|gi;
   }

xml文件hander name = @ arr;

答案 3 :(得分:0)

你正在扩展XML::Simple的限制。当你到达不完全喜欢它的地步时,它就是时候了。其他东西取决于你的问题,但我喜欢XML::Twig