2017-02-13 91 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) 
相關問題