1

取得したノードリストの各セルの値にアクセスしたいと思います。

$xc->registerNs('ns', 'urn:schemas-microsoft-com:office:spreadsheet');
foreach my $row ($xc->findnodes('/ns:Workbook/ns:Worksheet/ns:Table/ns:Row'))

形式は次のとおりです。

<Row>
    <Cell><Data ss:Type="String">sbdsvrwm832</Data></Cell>
    <Cell><Data ss:Type="String">3.0.6</Data></Cell>
    <Cell><Data ss:Type="Number">5.0999999999999996</Data></Cell>
    <Cell><Data ss:Type="String"/></Cell>
    <Cell><Data ss:Type="String">NA</Data></Cell>
    <Cell><Data ss:Type="String">NA</Data></Cell>
    <Cell><Data ss:Type="String">N/A in SHV3</Data></Cell>
    <Cell><Data ss:Type="String">YES</Data></Cell>
    <Cell><Data ss:Type="String"/></Cell>
    <Cell><Data ss:Type="String">YES</Data></Cell>
    <Cell><Data ss:Type="String">2013-09-20</Data></Cell>
    <Cell><Data ss:Type="String">NO</Data></Cell>
    <Cell><Data ss:Type="String"/></Cell>
   </Row><Row>
    <Cell><Data ss:Type="String">sbtorsvr832</Data></Cell>
    <Cell><Data ss:Type="String">4.0.1</Data></Cell>
    <Cell><Data ss:Type="Number">3.011111111</Data></Cell>
    <Cell><Data ss:Type="String"/></Cell>
    <Cell><Data ss:Type="String">ORI</Data></Cell>
    <Cell><Data ss:Type="String">NA</Data></Cell>
    <Cell><Data ss:Type="String">N/A in SHV3</Data></Cell>
    <Cell><Data ss:Type="String">YES</Data></Cell>
    <Cell><Data ss:Type="String"/></Cell>
    <Cell><Data ss:Type="String">YES</Data></Cell>
    <Cell><Data ss:Type="String">2013-07-18</Data></Cell>
    <Cell><Data ss:Type="String">NO</Data></Cell>
    <Cell><Data ss:Type="String"/></Cell>
   </Row>...
...

Cell/Data 要素には、XPath 式で使用できる名前または ID がないことに注意してください (これらはほとんど同一の要素であり、一部の値は null であるか、空白を含む場合があります)。このような行ごとに任意のセルのデータにインデックスでアクセスする方法はありますか? 前もって感謝します。

アレックス

4

1 に答える 1

0

探している XPath 式は (Row要素に関連する)...

"Cell[position()=$i]/Data"

... は$i、探している要素のインデックス (1 から始まる!) に対応します。

すべての行で同じ位置にあるすべてのアイテムを取得する必要がある場合は、この式の前に//Row/(ルート要素からクエリを実行していると仮定して) 追加するだけです。例えば:

my @nodesOfColumn2 = $dom->findnodes('//Row/Cell[position()=2]/Data');
print $_->to_literal, "\n" for @nodesOfColumn2;
### prints... 
### 3.0.6
### 4.0.1 
于 2013-09-22T21:24:18.557 に答える