我正在使用 Perl 和 XML::LibXML,我必须处理的 XML 如下所示:
<PARAM NAME = "A"><VALUE>1</VALUE>
<PARAM NAME = "B"><VALUE>3</VALUE>
<PARAM NAME = "C"><VALUE>43</VALUE>
<PARAM NAME = "A"><VALUE>6</VALUE>
<PARAM NAME = "B"><VALUE>3</VALUE>
<PARAM NAME = "C"><VALUE>13</VALUE>
.
.
.
我需要的输出基本上是:
A B C
1 3 43
6 3 13
我已将文字节点名称放入这样的数组中:
my @attributes = (
'./PARAM[@NAME = "A"]/VALUE',
'./PARAM[@NAME = "B"]/VALUE',
.
.
);
然后将 findnodes() 和 findvalue() 与这些 xpath 文字一起用作 foreach 循环中的参数,错误地尝试获取“一组”值以写入记录。自然,findnodes() 是错误的,因为它在每次循环中获取满足条件的所有节点(正如它应该做的那样),而 findvalues() 是错误的,因为它实际上做同样的事情,只是连接所有类似的-命名节点值。
由于这个文件的结构是这样的,我看不出有办法捕获“A到C”节点/值,写一条记录,然后重复……至少在不检查每个节点是否是“最后一个”的情况下不会一个'('C')。看来我基本上需要将它作为一个普通的旧文本文件来处理。