gpt4 book ai didi

xml - 如何从 perl 中的 xml 中获取所需的元素?

转载 作者:数据小太阳 更新时间:2023-10-29 02:21:57 26 4
gpt4 key购买 nike

我想要一个perl中的方法来做下面的操作示例 xml 文件

<?xml version="1.0"?>
<data>
<country name="Liechtenstein">
<rank>1</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/> First Country
</country>
<country name="Singapore">
<rank>4</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/> Second Country
</country>
<country name="Panama">
<rank>68</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/> Third Country
</country>
</data>

当我输入元素等级作为输入时,输出应该如下所示。

<?xml version="1.0"?>
<data>
<country name="Liechtenstein">
<rank>1</rank>
</country>
<country name="Singapore">
<rank>4</rank>
</country>
<country name="Panama">
<rank>68</rank>
</country>
</data>

最佳答案

此解决方案使用 XML::LibXML ,并通过查找具有所需节点名称的每个 country 元素的子元素,然后删除所有子元素并添加回所选元素来工作。

use strict;
use warnings;

use XML::LibXML;

my $doc = XML::LibXML->load_xml(IO => *DATA, no_blanks => 1);

my $nodename = 'rank';

for my $country ($doc->findnodes('/data/country')) {
my ($node) = $country->findnodes($nodename);
$country->removeChildNodes;
$country->appendChild($node);
}

print $doc->toString(1);

__DATA__
<?xml version="1.0"?>
<data>
<country name="Liechtenstein">
<rank>1</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/> First Country
</country>
<country name="Singapore">
<rank>4</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/> Second Country
</country>
<country name="Panama">
<rank>68</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/> Third Country
</country>
</data>

输出

<?xml version="1.0"?>
<data>
<country name="Liechtenstein">
<rank>1</rank>
</country>
<country name="Singapore">
<rank>4</rank>
</country>
<country name="Panama">
<rank>68</rank>
</country>
</data>

关于xml - 如何从 perl 中的 xml 中获取所需的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23738451/

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