我想替换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');
Run Code Online (Sandbox Code Playgroud)
错误是get是"无法找到对象方法"setValue"via package"XML :: LibXML :: Element ......"
ike*_*ami 18
你是从哪里来setValue的?没有XML :: LibXML对象有这样的方法.
此外,元素没有值,因此您无法设置它.
" VAL1"是元素的子节点(文本节点)的值.
my ($application_id_text) = $root->findnodes('/testing/application_id/text()');
$application_id_text->setData('VAL2');
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不是完全安全的.如果元素有多个文本子节点怎么办?如果它什么都没有呢?
更安全的方法是获取元素,删除所有作为文本节点的子节点(可以通过删除其所有子节点轻松完成),并添加具有所需值的新文本节点.
my ($application_id_node) = $root->findnodes('/testing/application_id');
$application_id_node->removeChildNodes();
$application_id_node->appendText('VAL2');
Run Code Online (Sandbox Code Playgroud)
Node或Element类中没有setValue方法,请参阅文档以获取可用方法列表.您可以删除元素的子元素并添加新的文本节点,如下所示:
$elem->removeChildNodes();
$elem->appendText('VAL2');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10813 次 |
| 最近记录: |