2017-02-13 88 views
0

下面是示例XML片段。我需要获得价值“ABCD”提取多个相似标记'named'值中的一个[Python-lxml]

sample.xml中

<layer> 
    <value>Random</value> 
    <value>12345</value> 
    </layer> 
    <layer> 
    <value>Last_Name</value> 
    <value>ABCD</value> 
    </layer> 
    <layer> 
    <value>dynamic</value> 
    <value>a1234bcd</value> 
    </layer> 

Sample.py

from lxml import etree 
tree = etree.parse('sample.xml') 
print tree.xpath('//layer[value="Last_Name"]/value')[0].text #returns **"Last_Name"** 
# Xpath : //layer/value[text()='Last_Name']/value # This also didn't work 

我如何提取相同的一个值标签?

+0

我真的不明白你想。你想获得内容为“Last_Name”的'value'元素后的第一个'value'元素的内容吗? – languitar

回答

1
tree.xpath('//layer[value="Last_Name"]/value')[1].text 

中的XPath将renturn:

[<value>Last_Name</value>, 
<value>ABCD</value>] 

ABCD是指数1

+1

是的,那工作。我的坏,愚蠢从我的结尾。谢谢你.... :) – Jackie

0

你好,我已经修改了你的XML文件只是一个位和一个以上标签称为标签

<data> 
<layer> 
    <value>Random</value> 
    <value>12345</value> 
</layer> 
<layer> 
    <value>Last_Name</value> 
    <value>ABCD</value> 
</layer> 
<layer> 
    <value>dynamic</value> 
    <value>a1234bcd</value> 
</layer> 
</data> 

现在这是一个简单的Python程序包围它。

####### Python代码
import xml.etree.ElementTree as ET 
tree = ET.ElementTree(file="filename.xml") 

root = tree.getroot() 
for child in root: 
    for attr in child: 
      if(attr.tag == 'value'): 
       print(attr.text) 
相关问题