gpt4 book ai didi

多寄存器嵌套标签的 Perl XML 编辑

转载 作者:行者123 更新时间:2023-12-04 05:15:28 26 4
gpt4 key购买 nike

我有一个嵌套的 XML 标记,需要在产品 XML 中为 ExternalId 附加 PF

输入 XML:

<Products>
<Product>
<ExternalId>317851</ExternalId>
</Product>
<Product>
<ExternalId>316232</ExternalId>
</Product>
<Product>
<ExternalId>13472</ExternalId>
</Product>
</Products>

期望的输出结果:
   <Products>
<Product>
<ExternalId>PF317851</ExternalId>
</Product>
<Product>
<ExternalId>PF316232</ExternalId>
</Product>
<Product>
<ExternalId>PF13472</ExternalId>
</Product>
</Products>

我尝试过使用 XML Simple。

最佳答案

使用模块的一种方法XML::Twig .
script.pl的内容:

#!/usr/bin/env perl

use warnings;
use strict;
use XML::Twig;

{
my $twig = XML::Twig->new(

twig_handlers => {
'Product/ExternalId' => sub {
$_->prefix( 'PF' );
}
},

pretty_print => 'indented',

)->parsefile( shift )->print;
}

像这样运行它:
perl-5.14.2 script.pl xmlfile

这会产生:
<Products>                                                                                                                                                                                                                                   
<Product>
<ExternalId>PF317851</ExternalId>
</Product>
<Product>
<ExternalId>PF316232</ExternalId>
</Product>
<Product>
<ExternalId>PF13472</ExternalId>
</Product>
</Products>

更新 : 要打印到文件,我添加了两个修改,一行打开输出文件, print将输出文件的文件句柄作为参数打印的方法

结果是:
#!/usr/bin/env perl

use warnings;
use strict;
use XML::Twig;

die qq|Usage: perl $0 <input-xml> <output-xml>\n| unless @ARGV == 2;

open my $ofh, '>', pop or die qq|ERROR: Cannot open output file\n|;

{
my $twig = XML::Twig->new(

twig_handlers => {
'Product/ExternalId' => sub {
$_->prefix( 'PF' );
}
},

pretty_print => 'indented',

)->parsefile( shift )->print( $ofh );
}

它的调用方式如下:
perl-5.14.2 script.pl xmlfile outfile

关于多寄存器嵌套标签的 Perl XML 编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14340263/

26 4 0