Я хочу пройти через две сессии в приведенном ниже xml как два отдельных узла:
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>
Однако, когда я запускаю этот код, он проходит через обе сессииоба раза:
#!/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,Какие изменения я могу сделать, чтобы дочерние узлы только одного сеанса каждый раз?Я видел ответы, используя childNodes (), но это вернет список, и я не хочу использовать grep для поиска определенного узла.