原始XML:更改几个字符仅在XML节点值使用Perl脚本
<library>
<email name="Peter P">[email protected]</email>
</library>
预期结果:
<library>
<email name="Peter Parker">[email protected]</email>
<address>London</address>
</library>
而且XML的挑战:
<library>
<email name="Peter Parker">[email protected]</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('[email protected]');
$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 ::节点列表”,找到对象的方法 “replaceNode”
我是一个初学者,新的Perl脚本。我想用Perl和XML :: LibXML模块修改XML文件。我还访问了CPAN,但很难用很少的相关示例来理解这个概念。如果你能提供一些提高我的知识的提示。
高兴得到任何形式的反馈,并愿意学习:)
你尝试过什么?你有什么问题?请告诉我们你的代码。如果你没有任何代码,Stack Overflow是问这个问题的错误地方。 –
你怎么知道彼得帕克住在伦敦? – simbabque
显然,帕克先生是卧底摄影师,我很愚蠢的将这些信息提供出来。 – NewUser