我想替换xml文件中元素的“VAL1”值
出于某种原因,它对我不起作用:
<testing>
<application_name>TEST</application_name>
<application_id>VAL1</application_id>
<application_password>1234</application_password>
</testing>
my $parser =XML::LibXML->new();
$tree =$parser->parse_file($xml);
$root =$tree->getDocumentElement;
my ($elem)=$root->findnodes('/testing/application_id');
$elem->setValue('VAL2');
错误是get是“找不到对象方法”setValue“via package”XML :: LibXML :: Element ...“
答案 0 :(得分:16)
你从哪里得到setValue
?没有XML::LibXML对象有这样的方法。
此外,元素没有值,因此您无法设置它。
“VAL1
”是元素子节点的值text node。
my ($application_id_text) = $root->findnodes('/testing/application_id/text()');
$application_id_text->setData('VAL2');
不幸的是,这并不完全安全。如果元素有多个文本子节点怎么办?如果它根本没有什么呢?
更安全的方法是获取元素,删除所有作为文本节点的子节点(可以通过删除其所有子节点轻松完成),并添加具有所需值的新文本节点。
my ($application_id_node) = $root->findnodes('/testing/application_id');
$application_id_node->removeChildNodes();
$application_id_node->appendText('VAL2');
答案 1 :(得分:7)