我有一个xml文件,看起来像这样:
<?xml version= "1.0" encoding="ISO-8859-1"?>
<File>
<Field>
<Name>CTX_LOG_SYS</Name>
<ClearName></ClearName>
<RawValue>000000000000000000000000</RawValue>
<Array>
<Name>TX</Name>
<Row number="0">
<Value>0</Value>
</Row>
<Row number="1">
<Value>0</Value>
</Row>
<Row number="2">
<Value>0</Value>
</Row>
</Array>
</Field>
<Field>
<Name>VICK</Name>
<ClearName></ClearName>
<RawValue>0000016B00040</RawValue>
<Array>
<Name>VC</Name>
<Row number="0">
<Value>33</Value>
</Row>
<Row number="1">
<Value>244</Value>
</Row>
<Row number="2">
<Value>0</Value>
</Row>
<Row number="3">
<Value>363</Value>
</Row>
<Row number="4">
<Value>44</Value>
</Row>
<Row number="5">
<Value>0</Value>
</Row>
<Row number="6">
<Value>3</Value>
</Row>
<Row number="7">
<Value>26</Value>
</Row>
<Row number="8">
<Value>0</Value>
</Row>
</Array>
</Field>
</File>
我想提取第二个数组的33, 244, 0, 363, 44, 0, 3, 26, 0
的所有值。
我可以选择Value
标签的所有内容,但我不能只按位置选择第2个值。
这是我的代码:
for vick in root.findall('./Field/Array[1]//'):
val = vick.find('Value')
if val is not None:
print val.tag, val.attrib, val.text
我得到了这个结果:
Value {} 0
Value {} 0
Value {} 0
Value {} 33
Value {} 244
Value {} 0
Value {} 363
Value {} 44
Value {} 0
Value {} 3
Value {} 26
Value {} 0
有人可以帮忙吗? 谢谢!
我正在处理一个文件,其中这些标签重复Ntime,如下所示:
<?xml version= "1.0" encoding="ISO-8859-1"?>
<File>
<Param>
<Field>
<Name>thydr</Name>
<ClearName></ClearName>
<RawValue>000000000000000000000000</RawValue>
<Array>
</Array>
</Field>
<Field>
<Name>VICK</Name>
<ClearName></ClearName>
<RawValue>000001040</RawValue>
<Array>
</Array>
</Field>
</Param>
<Param>
<Field>
<Name>thrss</Name>
<ClearName></ClearName>
<RawValue>000000000000000000000000</RawValue>
<Array>
</Array>
</Field>
<Field>
<Name>VICK</Name>
<ClearName></ClearName>
<RawValue>0000016B00040</RawValue>
<Array>
</Array>
</Field>
</Param>
<Param>
<Field>
<Name>ghytd</Name>
<ClearName></ClearName>
<RawValue>000000000000000000000000</RawValue>
<Array>
</Array>
</Field>
<Field>
<Name>VICK</Name>
<ClearName></ClearName>
<RawValue>000000040</RawValue>
<Array>
</Array>
</Field>
</Param>
</File>
对于每个<Param>
代码,我想取第二个<Array>
的值。
答案 0 :(得分:1)
试试这个XPath:
/File/Field[2]/Array//Row/Value/text()
选择第二个数组的所有值。或者省略末尾的/text()
以仅获取Value
个节点
输出是:
3324403634403260
根据需要使用分隔符。