gpt4 book ai didi

perl - 使用 XML::Simple 向 xml 添加属性

转载 作者:行者123 更新时间:2023-12-02 04:56:16 25 4
gpt4 key购买 nike

我正在尝试使用 XML::Simple 向现有 XML 添加属性。

<arbre>
<branche name="courbe" >
<description>
<![CDATA[une belle branche]]>
</description>
<feuilles>
<fleur color="blue" order="1" />
<fleur color="white" order="2" />
<fleur color="yellow" order="3" />
</feuilles>
</branche>
<branche name="droite" >
<description>
<![CDATA[une branche commune]]>
</description>
<feuilles>
<fleur color="purple" order="1" />
<fleur color="green" order="2" />
</feuilles>
</branche>
</arbre>

我正在尝试转换成:

<arbre>
<branche name="courbe" type="conifere">
<description>
<![CDATA[une belle branche]]>
</description>
<feuilles>
<fleur color="blue" order="1" />
<fleur color="white" order="2" />
<fleur color="yellow" order="3" />
</feuilles>
</branche>
<branche name="droite" type="resineux">
<description>
<![CDATA[une branche commune]]>
</description>
<feuilles>
<fleur color="purple" order="1" />
<fleur color="green" order="2" />
</feuilles>
</branche>
</arbre>

注意branche标签中的type属性。
到目前为止,我有以下内容:

#!/usr/bin/env perl -w

use strict;
use XML::Simple;
use Data::Dumper;

my $funclist = XML::Simple->new();
my $arbres = $funclist->XMLin("test.xml");

print Dumper($arbres);
exit 0;

据我从文档中了解到 $arbres 是一个散列,我必须在每个分支键中插入类型属性键和值。
除了我不知道在哪里以及如何($arbres{something} = “conifere”?)。
谢谢

最佳答案

use strict;
use warnings FATAL => 'all';
use XML::Simple qw();

my %branche_map = (
courbe => 'conifere',
droite => 'resineux',
);
my $xs = XML::Simple->new(StrictMode => 1, ForceArray => 1, KeyAttr => undef, RootName => 'arbre');
my $arbres = $xs->XMLin('test.xml');

for my $branche (@{ $arbres->{branche} }) {
$branche->{type} = $branche_map{ $branche->{name} };
}
print $xs->XMLout($arbres)

关于perl - 使用 XML::Simple 向 xml 添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17925711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com