使用Perl脚本仅在XML的节点值中更改几个字符 [英] Change few characters only in a node value in XML using Perl script
本文介绍了使用Perl脚本仅在XML的节点值中更改几个字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
原始XML:
<library>
<email name="Peter P">Peter_Parker@library.com</email>
</library>
预期结果:
<library>
<email name="Peter Parker">Peter.Parker@library.com</email>
<address>London</address>
</library>
进一步的XML挑战:
<library>
<email name="Peter Parker">Peter.Parker@library.com</email>
<address>
<housenumber>1</housenumber>
<street>Regent Street</street>
<postcode>AB12YZ</postcode>
</address>
</library>
代码:
use strict;
use XML::LibXML;
use XML::LibXML::NodeList;
my $parser = XML::LibXML->new;
my $doc = $parser->parse_file("StackTest.xml");
my $root = $doc->getDocumentElement();
#to modify email address
my $email = $doc->findnodes("/library/email");
my $text = XML::LibXML::Text->new('Peter.Parker@library.com');
$email->replaceNode($text);
#to modify email name attribute
my $email_attribute = $doc->findnodes("/library/email");
my $email_name_att->setAttribute(q|name|,"Peter Parker");
$email_attribute->getAttribute(q|name|);
#to add <address tag> with value
my $address = $doc->createElement('address');
$address->appendText('London');
$root->appendChild($address);
print($doc->toString);
错误消息:
无法通过包"XML :: LibXML :: NodeList"找到对象方法"replaceNode"
Can't locate object method "replaceNode" via package "XML::LibXML::NodeList"
我是初学者,是Perl脚本的新手.我想使用Perl和XML :: LibXML模块修改XML文件.我也访问了CPAN,但是很难通过很少的相关示例来理解这个概念.如果您能为我提供一些提示,那对提高我的知识很有帮助.
I'm a beginner and new to Perl script. I'd like to modify the XML file using Perl and XML::LibXML module. I also visited CPAN but it's very difficult to grasp the concept with very little related examples. If you could provide me some hints that would be great to improve my knowledge.
很高兴获得各种反馈,并愿意学习:)
Happy to get any sort of feedback and willing to learn :)
推荐答案
查看全文