gpt4 book ai didi

xml - 用于在 XML 中查找和替换标记值的 Perl 代码

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

下面是我将使用的 XML:

<a>

<id>ABC</id>

<class />

<gender />

</a>

我想编写一个 Perl 代码来搜索标签“id”并将值“ABC”替换为“DEF”。

但是上面 XML 的嵌套可以改变。所以我想制作一个通用代码,独立于其确切位置搜索标签“id”。

到目前为止,我能够获得可以替换 ABC 中的值的逻辑,但这使我的代码对标记“id”的位置保持静态。

#!usr/bin/perl
use warnings;
use XML::Simple;
use Spreadsheet::ParseExcel;
use Data::Dumper;
my $FileName = 'sample.xls';
my $xml_file = 'hello.xml';
$par=$ARGV[0];
my $xml = XMLin($xml_file,
KeepRoot=>1,
ForceArray=>1,);
$xml->{a}->[0]->{id}='DEF';
XMLout(
$xml,
KeepRoot =>1 ,
NoAttr =>1,
OutputFile => $xml_file,
);
}

最佳答案

XPath 无需知道在树中的位置即可找到节点。

use strictures;
use XML::LibXML qw();
my $dom = XML::LibXML->load_xml(string => <<'XML');
<a>
<id>ABC</id>
<class />
<gender />
</a>
XML

for my $id ($dom->findnodes('//id[string()="ABC"]')) {
$id->removeChildNodes;
$id->appendText('DEF');
}

print $dom->toString

关于xml - 用于在 XML 中查找和替换标记值的 Perl 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11482365/

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