提问人:Jusaquikie 提问时间:11/13/2020 最后编辑:Thân LƯƠNG ĐìnhJusaquikie 更新时间:11/14/2020 访问量:58
从不在同一数组中但始终如下的解析 XML 文件中提取信息
Pulling Information from a Parsed XML File that's NOT in the same array but always the following
问:
我希望将下面的值拉到我的脚本中。我的问题是它不在同一个数组中,它总是紧跟在它后面,所以我不知道如何抓住它。我想知道是否有办法查找 NEXT 标签并@value提取值。RO_XV100
parameters
我正在解析的内容的片段。
<momentaryButton name="MomentaryPushButton7" description="Valve Force Toggle" >
</momentaryButton>
<parameters>
<parameter name="#1" description="Valve Tag" value="RO_XV100"/>
</parameters>
这是 Perl 的片段。
foreach my $title ($doc->findnodes('//momentaryButton')) {
my $sec;
my @securitylevels= ();
my $button = $title->findvalue('@description');
$sec = "G";
}
print_latex($i,$button,"Momentary Push Button",$sec,"N\/A","N\/A");
$i++;
}
感谢您的帮助。 我正在使用:
use XML::LibXML;
use XML::Parser;
答:
2赞
ikegami
11/13/2020
#1
XPath 是 的缩写。 并称为“搜索轴”。您可以通过搜索轴来实现您想要的。//foo/bar
/descendant::foo/child::bar
descendant
child
following-sibling
for my $button_node ($doc->findnodes('//momentaryButton')) {
my $button_text = $button_node->getAttribute('description');
my $param_val = $doc->findvalue(
'following-sibling::parameters/parameter[1]/@value', $button_node);
print_latex($i, $button_text, "Momentary Push Button", $sec, "N/A", "N/A");
++$i;
}
如果希望按名称而不是按位置查找参数,则可以改用以下 XPath:
following-sibling::parameters/parameter[@name="#1"]/@value
评论
0赞
Jusaquikie
11/14/2020
谢谢池上!我能够让它与你的答案一起工作。非常感谢
1赞
ikegami
11/14/2020
没关系。这通常是通过检查答案旁边的标记来传达的。
评论