2017-02-13 5 views
0

以下はサンプルのXMLスニペットです。私はどのように私は同じの1の値を抽出しない値"ABCD"複数の同様のタグ「名前付き」値の1つを抽出する[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

に私は本当に何を理解していないです欲しいです。 'value'要素の後に最初の' value'要素の内容を 'Last_Name'の内容で取得しますか? – languitar

答えて

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

Pythonのコード#######:

[<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プログラムであると呼ばれる1個の以上のタグでそれを同封しました。

xpathがrenturnます
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) 
関連する問題