如果solve
是user
,我需要name
( LINES
) 的值。
如果solve
isimm
和 name is ARCH
,我需要value
( 6M
)的值
我尝试了以下方法:
use strict;
use warnings;
use XML::LibXML;
my $parser = XML::LibXML->new();
my $doc = $parser->parse_file(...);
my $j = 0;
my @imm;
$imm[$j++] = $_->data
foreach
$doc->findnodes(
"//meters/meter"
."/name[../value[\@solve/string() = 'immediate']]"
."/text()");
错误是
Possible unintended interpolation of @solve in string
Global symbol "@solve" requires explicit package name
示例 XML:
<rules>
<meters>
<meter>
<name>LINES</spirit:name>
<display>LINES</display>
<description>Specifies the number of lines</description>
<value
solve="user"
id="LINES"
order="11"
format="long"
dataType="integer"
min="2"
max="34">34</value>
</meter>
<meter>
<name>ARCH</name>
<display>Define ARCH</display>
<description>Define ARCH</description>
<value
format="string"
solve="imm"
id="ARCH"
>6M</value>
</meter>
</meters>
</rules>
<rules>
<meters>
<meter>
<name>LINES</spirit:name>
<display>LINES</display>
<description>Specifies the number of lines</description>
<value
solve="user"
id="LINES"
order="11"
format="long"
dataType="integer"
min="2"
max="34">34</value>
</meter>
<meter>
<name>ARCH</name>
<display>Define ARCH</display>
<description>Define ARCH</description>
<value
format="string"
solve="imm"
id="ARCH"
>6M</value>
</meter>
</meters>
</rules>