私は 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',
.
.
);
そして、これらの xpath リテラルを foreach ループの引数として findnodes() および findvalue() を使用して、誤って値の「セット」を取得してレコードに書き込もうとしました。当然のことながら、findnodes() は、ループを通過するたびに基準を満たすすべてのノードを取得するため (本来はそうする必要があります)、正しくありません。 -名前付きノード値。
このファイルはそのままの構造になっているため、「A ~ C」ノード/値をキャプチャし、レコードを書き込んでから繰り返す方法はありません。少なくとも、すべてのノードをチェックして「最後のone' ('C')。基本的に、これをプレーンな古いテキスト ファイルとして処理する必要があるようです。