Example #1
0
    def __init__(self, nodes, attribs, filename=None, xml_data=None):

        keys = nodes.keys()
        keys.append(attribs.keys())
        keys.append(("_nodes", "_attribs", "_keys", "_basekeys"))

        self.__dict__["_nodes"] = nodes
        self.__dict__["_attribs"] = attribs
        self.__dict__["_basekeys"] = keys
        keys.append("description")
        self.__dict__["_keys"] = keys

        for (name, value) in attribs.iteritems():
            self.__dict__[name] = value

        try:
            xml_root = ET.parse(filename)
        except:
            xml_root = None

        if xml_root is None:
            try:
                xml_root = ET.ElementTree(ET.fromstring(xml_data))
            except:
                xml_root = None

        for (node_name, node_attrib) in nodes.iteritems():
            if(isinstance(node_attrib, dict)):
                if node_attrib.has_key("subnodes"):
                    node = create_node(node_name, node_attrib["attribs"],
                                       xml_root, node_attrib["subnodes"]
                                       )
                else:
                    node = create_node(node_name, node_attrib["attribs"],
                                       xml_root
                                       )
            else:
                node = create_node(node_name, node_attrib, xml_root)
                
            self.__dict__[node_name] = node

        if not xml_root is None:
            el = xml_root.getroot()
            for (name, value) in el.attrib.items():
                self.__dict__[name] = value

            el = xml_root.find("description")
            if not el is None:
                self.description = str(el.text)
Example #2
0
 def asXML(self, encoding="utf-8"):
     xml_tree = self.asXMLTree()
     xml_string = ET.tostring(xml_tree, encoding)
     return xml_beautifier(xml_string)