XML/XPath: Difference between revisions

Content added Content deleted
(→‎{{header|Python}}: add ElementTree and LXML version)
(→‎{{header|Python}}: fix reference to ElementTree and top level lookup)
Line 1,437: Line 1,437:
doc = ET.parse('inventory.xml') # or load it directly
doc = ET.parse('inventory.xml') # or load it directly


# Note, ElementTree's root is the top level element. So you need ".//" to really start searching from top
# Return first Item
item1 = doc.find("section/item")


# Return first Item
# Note, ElementTree's simple XPath does not support //foo or /foo/bar syntax.
item1 = doc.find("section/item") # or ".//item"


# Print each price
# Print each price
for p in doc.findall("section/item/price"):
for p in doc.findall("section/item/price"): # or ".//price"
print "{0:0.2f}".format(float(p.text)) # could raise exception on missing text or invalid float() conversion
print "{0:0.2f}".format(float(p.text)) # could raise exception on missing text or invalid float() conversion


names = doc.findall("section/item/name") # list of names</lang>
# list of names
names = doc.findall("section/item/name") # or ".//name"</lang>
Or, you can install the <tt>lxml</tt> package and get full XPath support
Or, you can install the <tt>lxml</tt> package and get full XPath support
<lang python>
<lang python>