我的问题是我的 XML 看起来像这样:
<A>
<INIT>
<wwn>myvalue1</wwn>
.
[one or more values]
.
<wwn>myvalue2</wwn>
</INIT>
</A>
这是我需要的那些多个节点的值。总会有1个或更多,但我不知道有多少。
我发现很难使用 findvalue(),并且正如在几个地方所记录的那样,多个节点的值将被连接起来,并由 findvalue() 作为单个字符串值返回。
我的想法是使用 findnodes,并为找到的每个节点获取该节点的值。听起来像一个计划,因为我看到图书馆包含
$content = $node->nodeValue;
作为一种选择,文档表明这正是我所需要的。这是我尝试过的:
for my $INIT ($A->findnodes('./INIT')) {
foreach my $Wwn ($INIT->findnodes('./wwn')) {
my $wwn = $Wwn->nodeValue;
}
}
这会返回一个错误,告诉我 $wwn 没有被初始化。我已经证明 $Wwn 的值确实是文字节点字符串
<wwn>myvalue1</wwn>
.
如此接近,却又如此遥远。对于节点的每个值,我需要写一条记录,所以我想使用 foreach{} 这样我就可以一次处理每个值。我认为我实际上并没有向 nodeValue 发送“节点”,而是发送了它无法识别的其他内容。如果 $INIT 不是节点,那么它还能是什么?
非常感谢任何帮助。