2

我正在使用XML::Simple来编辑 XML 文件。之后更新的数据被发送到一个新的 XML 文件。但是这个过程会产生<opt></opt>要添加的标签,而原来的父标签会丢失。我想<opt>用原始标签名称替换。我怎么做?

4

3 回答 3

2

请参阅KeepRoot。您还应该考虑启用严格模式

#!/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>
于 2010-01-13T23:44:22.687 回答
0

在新的 xml 文件中,您可以使用常规表达式找到要删除的模式,然后替换为您想要的模式,即原始标签。

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


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

xml 文件处理程序名称=@arr;

于 2010-01-14T02:21:52.537 回答
0

您正在扩展XML::Simple的限制。当你到了你不喜欢它的作用的地步时,是时候做点别的了。其他的东西取决于你的问题,但我喜欢XML::Twig

于 2010-01-14T04:06:57.380 回答