Skip to content

Instantly share code, notes, and snippets.

@joestump
Created September 1, 2009 01:39
Show Gist options
  • Save joestump/178828 to your computer and use it in GitHub Desktop.
Save joestump/178828 to your computer and use it in GitHub Desktop.
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
class XMLTree(object):
nodes = {}
def __init__(self, node):
self.node = node
for n in node:
if len(n.getchildren()):
self.nodes[n.tag] = XMLTree(n)
else:
self.nodes[n.tag] = XMLNode(n)
def __getattr__(self, attr):
return self.nodes[attr]
def __getitem__(self, key):
return self.node.attrib.get(key)
def __len__(self):
return len(self.nodes)
class XMLNode(object):
def __init__(self, node):
self.node = node
def __getitem__(self, key):
return self.node.attrib.get(key)
def __unicode__(self):
return self.node.text
def __repr__(self):
return self.__unicode__()
def parse(file):
tree = ET.parse(file)
return XMLTree(tree.getroot())
if __name__ == "__main__":
xml = parse("KEYE.xml")
print xml.credit
print xml.credit["name"]
print xml.image.url
print xml.image["test"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment