Reading XML file and fetching its attributes value in Python

Here’s an lxml snippet that extracts an attribute as well as element text (your question was a little ambiguous about which one you needed, so I’m including both):

from lxml import etree
doc = etree.parse(filename)

memoryElem = doc.find('memory')
print memoryElem.text        # element text
print memoryElem.get('unit') # attribute

You asked (in a comment on Ali Afshar’s answer) whether minidom (2.x, 3.x) is a good alternative. Here’s the equivalent code using minidom; judge for yourself which is nicer:

import xml.dom.minidom as minidom
doc = minidom.parse(filename)

memoryElem = doc.getElementsByTagName('memory')[0]
print ''.join( [node.data for node in memoryElem.childNodes] )
print memoryElem.getAttribute('unit')

lxml seems like the winner to me.

Leave a Comment