gpt4 book ai didi

XML:只获取一个节点的部分子节点

转载 作者:数据小太阳 更新时间:2023-10-29 02:20:18 26 4
gpt4 key购买 nike

我想将下面 xml 中的两个 session 作为两个单独的节点遍历:

abc.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<resource>
<session>
<parameter name="QWS" value="N1"/>
<parameter name="AQC" value="Y2"/>
<parameter name="VDF" value="301"/>
<parameter name="VTT" value="X2"/>
<parameter name="HRR" value="Y2"/>
</session>
<session>
<parameter name="ABC" value="N"/>
<parameter name="XYZ" value="Y"/>
<parameter name="GHI" value="30"/>
<parameter name="DEF" value="X"/>
<parameter name="QQW" value="Y"/>
</session>
</resource>

然而,当我运行这段代码时,它两次遍历了两个 session :

#!/usr/bin/perl
use warnings;
use strict;
use XML::LibXML;

my $filename = 'E:/perl_files/abc.xml';
my $dom = XML::LibXML->load_xml(location => $filename);

foreach my $session ($dom->findnodes('//session'))
{
print "In SESSION \n";
foreach my $parameter ($session->findnodes('//parameter')) {
my $name= $parameter->getAttribute('name');
my $value= $parameter->getAttribute('value');
print "Tag in session is $name with value $value\n";
}
print "END OF SESSION\n";
}

留给我这个输出:

In SESSION
Tag in session is QWS with value N1
Tag in session is AQC with value Y2
Tag in session is VDF with value 301
Tag in session is VTT with value X2
Tag in session is HRR with value Y2
Tag in session is ABC with value N
Tag in session is XYZ with value Y
Tag in session is GHI with value 30
Tag in session is DEF with value X
Tag in session is QQW with value Y
END OF SESSION
In SESSION
Tag in session is QWS with value N1
Tag in session is AQC with value Y2
Tag in session is VDF with value 301
Tag in session is VTT with value X2
Tag in session is HRR with value Y2
Tag in session is ABC with value N
Tag in session is XYZ with value Y
Tag in session is GHI with value 30
Tag in session is DEF with value X
Tag in session is QQW with value Y
END OF SESSION

我希望输出是

In SESSION
Tag in session is QWS with value N1
Tag in session is AQC with value Y2
Tag in session is VDF with value 301
Tag in session is VTT with value X2
Tag in session is HRR with value Y2
END OF SESSION
In SESSION
Tag in session is ABC with value N
Tag in session is XYZ with value Y
Tag in session is GHI with value 30
Tag in session is DEF with value X
Tag in session is QQW with value Y
END OF SESSION

我正在使用 XML::LibXML。我可以进行哪些更改以每次只获取一个 session 的子节点?我看到了使用 childNodes() 的答案,但这会返回一个列表,我不想使用 grep 来查找特定节点。

最佳答案

//parameter 到处搜索parameter,只需要在session下搜索,即在当前节点下:

    foreach my $parameter ($session->findnodes('.//parameter')) {

关于XML:只获取一个节点的部分子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53516070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com