我想编写一个 perl 代码来替换 XML 中标记的内容。例如<A>Hello<A>
。
我想在我的 XML 中搜索标签<A>
,然后将值“Hello”替换为“Hi”。
我怎么做?
该XML::Twig
模块非常适合这一点,因为它允许您指定在解析 XML 时遇到给定标记时执行的处理程序。
如果您提供了一些真实的 XML 数据作为示例,那将会有所帮助,但是我使用了您问题的摘要。
use strict;
use warnings;
use XML::Twig;
my $twig = XML::Twig->new(
twig_handlers => { A => sub { $_->subs_text(qr/Hello/, 'Hi') } },
);
$twig->parse(*DATA);
$twig->print;
__DATA__
<root>
I want to replace the content of a tag in XML. e.g. In
<A>Hello</A> I want to replace the value "Hello" with "Hi".
</root>
输出
<root>
I want to replace the content of a tag in XML. e.g. In
<A>Hi</A> I want to replace the value "Hello" with "Hi".
</root>
使用XML::XSH2,一个围绕XML::LibXML的包装器:
open file.xml ;
for //A[text()='Hello'] set text() 'Hi' ;
save :b ;