# Bryan Schumaker (10/24/2010) import xml.dom.minidom as xml def attributes(node): attrs = dict() for i in range(node.attributes.length): item = node.attributes.item(i) attrs[item.name] = item.nodeValue return attrs def children(doc): list = [] for node in doc.childNodes: if node.nodeType == node.TEXT_NODE: if node.data.strip() == "": continue list += [node] return list def child(doc): list = children(doc) if len(list) > 0: return list[0] return None def check_type(value): if value.__class__ == unicode: return value.encode("utf-8") return str(value) def add_child(doc, node, name, attrs = {}): child = doc.createElement(name) for attr in attrs: value = check_type(attrs[attr]) child.setAttribute(attr, value) node.appendChild(child) return child def add_text(doc, node, value): value = check_type(value) try: child = doc.createTextNode( value ) node.appendChild(child) return value except Exception, e: print e print value, value.__class__ def get_elements(doc, tag): return doc.getElementsByTagName(tag) def find_attribute(doc, tag, attr, value): for node in get_elements(doc, tag): if attributes(node)[attr] == value: return node return None def find_preferred_attribute(doc, tag, attr, values): for value in values: attr = find_attribute(doc, tag, attr, value) if attr: return attr None def new(): return xml.Document() def parse(xml_file): return xml.parse(xml_file)