加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用XML :: LibXML替换XML节点

发布时间:2020-12-16 22:40:42 所属栏目:百科 来源:网络整理
导读:有谁可以帮助我吗?我需要使用Perl和 XML :: Lib XML模块替换 XML节点 这是XML文件的片段: utenti utente usernameamministratore/username useremailadmin@email.com/useremail password0000/password /utente/utenti 我需要替换密码的值. 特别是我必须在X
有谁可以帮助我吗?我需要使用Perl和 XML :: Lib XML模块替换 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类的对象,它有一个funnd parentNode.

有关更多详细信息,请参阅XML::LibXML::Node的文档

my $psw = $doc->findnodes("/utenti/utente[username="$userCookie"]/password");
my $parent = $psw->[0]->parentNode;
$parent->removeChild($psw->[0]);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读