2016-04-09 10 views
1

私はXPathの初心者です。私は次のXMLファイルを持っています。 ここに私のxmlファイル:XMLからXPathの子ノードの値に基づいて特定のブロック(グループ)を取得する方法は?

<?xml version='1.0' encoding='utf-8'?> 
<items> 
    <item> 
     <country>India</country> 
     <referenceId>IN375TP</referenceId> 
     <price>400</price> 
    </item> 
    <item> 
     <country>Australia</country> 
     <referenceId>AU120ED</referenceId> 
     <price>15</price> 
    </item> 
    <item> 
     <country>United Kingdom</country> 
     <referenceId>UK862RB</referenceId> 
     <price>20</price> 
    </item> 
</items> 

私は出力として、次の<item>タグたい:

<item> 
    <country>Australia</country> 
    <referenceId>AU120ED</referenceId> 
    <price>15</price> 
</item>  

注意:あなたは国によってアイテムを検索する場合/items/item[referenceId/text()="AU120ED"]

+0

どのような値に基づいて? –

+0

条件を追加しました –

+0

どこからxmlを取得しましたか? –

答えて

2

のような条件を使用してくださいテキスト=国名

を持つアイテムでアイテムを検索することを指定するxpathを使用できますあなたが実際にreferenceidことを検索したい場合
from lxml.etree import parse, HTMLParser 

xml = parse("check.xml",HTMLParser()) 

print(xml.find("//items//item[country='Australia']")) 
<Element item at 0x7f40faa28950> 

、ちょうどitem[referenceid='AU120ED']に変更します。

print(xml.find("//items//item[referenceid='AU120ED']")) 
<Element item at 0x7f02c0c24998> 

XMLについて:

from xml.etree import ElementTree as et 

xml = et.parse("check.xml") 

print(xml.find(".").find("./item[referenceId='AU120ED']")) 
関連する問題