2016-04-09 4 views
1

Ich bin ein Neuling für XPath. Ich habe die folgende XML-Datei. Hier meine XML-Datei:Wie erhält man einen bestimmten Block (eine Gruppe) basierend auf dem Wert eines untergeordneten Knotens in XPath aus dem XML?

<?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> 

ich folgende <item> Tag als ausgegeben werden soll:

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

Hinweis: Bedingung verwenden Sie bitte wie /items/item[referenceId/text()="AU120ED"]

+0

Basierend auf welchen Wert? –

+0

Ich habe eine Bedingung hinzugefügt –

+0

Woher hast du das xml? –

Antwort

2

Wenn Sie den Artikel nach Land finden wollen Sie können einen X-Pfad verwenden, der angibt, dass Sie das Element in Elementen mit dem Text = Landname:

suchen möchten
from lxml.etree import parse, HTMLParser 

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

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

Wenn Sie wollen tatsächlich referenceId werden suchen, nur um item[referenceid='AU120ED'] zu ändern:

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

Für xml:

from xml.etree import ElementTree as et 

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

print(xml.find(".").find("./item[referenceId='AU120ED']")) 
Verwandte Themen