Xml Perl:如何访问相同同级的值
我想访问检索到的节点列表的每个单元格的值:Xml Perl:如何访问相同同级的值,xml,perl,Xml,Perl,我想访问检索到的节点列表的每个单元格的值: $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">sbdsvr
$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>...
...
请注意,单元格/数据元素没有可以与XPath表达式一起使用的名称或ID。它们大多是相同的元素,有些值可能为null或包含空格。是否有一种方法可以通过索引访问任意单元格中每一行的数据?提前谢谢
Alex您要查找的XPath表达式是相对于行元素的
"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
不太清楚你的意思是什么,因为你已经在你的每个收藏行。不过,有一个名为position的XPath函数可能会派上用场。我想访问每行任意单元格列中的数据。你的建议很有趣。请举例说明如何使用position函数处理此$row?谢谢