xml - 使用 XML::LibXML 替换 XML 节点

标签 xml perl

有人可以帮帮我吗?我需要用 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/

相关文章:

java - 使用环境变量在项目外加载 log4j2.xml 文件

regex - 重命名文件时替换和添加前导零

Perl 移位运算符简单问题

Perl LWP::useragent 捕获服务器响应 header

android - 给定资源值的 <color> 无效

c# - 将 XDocument 转换为 XmlDocument,反之亦然

perl - 如何在不使用第三个的情况下交换两个 Perl 变量?

perl - 我应该保持文件打开还是应该经常打开和关闭?

java - Spring AOP配置拦截所有异常

xml - XML 属性中允许的最大字符数是多少?