有人可以帮帮我吗?我需要用 XML::LibXML
模块替换使用 Perl 的 XML 节点
这是 XML 文件的片段:
<utenti>
<utente>
<username>amministratore</username>
<useremail>admin@email.com</useremail>
<password>0000</password>
</utente>
</utenti>
我需要替换密码的值。
特别是我必须在 XML 文件中找到具有特定用户名的用户(由 cookie $userCookie
提供)并将其密码替换为变量 $newPSW
.
我已经试过了:
my $psw = $doc->findnodes("/utenti/utente[username=\"$userCookie\"]/password");
my $parent = $psw->parentNode;
$parent->removeChild($psw);
my $password = XML::LibXML::Element->new('password');
$password->appendText( $newPSW );
$parent->appendChild($password);
但每次浏览器都会给我以下错误:
Can't locate object method "parentNode" via package "XML::LibXML::NodeList"
好像没找到我用的方法。
有人可以帮忙吗?
最佳答案
您将得到一个 XML::LibXML::NodeList
作为结果。而且这个对象没有函数parentNode
。您必须获取数组的第一个元素,然后对其调用方法 parentNode
。
第一个对象将是 XML::LibXML::Node
类的对象,它有一个函数 parentNode
。
有关更多详细信息,请参阅 XML::LibXML::Node 的文档
my $psw = $doc->findnodes("/utenti/utente[username=\"$userCookie\"]/password");
my $parent = $psw->[0]->parentNode;
$parent->removeChild($psw->[0]);
关于xml - 使用 XML::LibXML 替换 XML 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30321246/