我正在尝试更新 xml 元素的内容。我正在使用 XML::LibXML 并且需要使用这个库。这是一些示例数据。
<data-table>
<data>
<number>1</number>
<letter>one</letter>
</data>
<data>
<number>2</number>
<letter>two</letter>
</data>
</data-table>
如果数字为 2,我想做的是将字母的内容更改为“紫色”。但是我相信我在指定 Xpath 以使其工作时遇到问题。我收到以下错误
“无法通过包“XML::LibXML::NodeList”定位对象方法“setData”
我已经为此苦苦挣扎了好几天,因此非常感谢任何帮助。
use XML::LibXML;
my $p = XML::LibXML->new;
my $d = $p->parse_fh(\*DATA);
for my $node ($d->findnodes('//data-table/data'))
{
for my $childNode ($node->findnodes('./number/text()'))
{
if($childNode->textContent() == '1')
{ # here is where the problem is!
my $changeNumerNode = $node->findnodes('./letter/text()');
$changeNumerNode->setData("Purple");
}
}
}
print $d->toString;
__DATA__
<data-table>
<data>
<number>1</number>
<letter>one</letter>
</data>
<data>
<number>2</number>
<letter>two</letter>
</data>
</data-table>