我正在使用XML::Simple来编辑XML文件。之后,更新的数据将发送到新的XML文件。但是此过程会生成<opt></opt>
标记,并且原始父标记会丢失。我想将<opt>
替换为原始标记名称。我该怎么做?
答案 0 :(得分:3)
您还可以尝试搜索 rootname 选项。另见:
答案 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。