示例#1
0
    def inject_file(self, default_model, config_model):
        updated_model = dict(default_model, **config_model)

        properties = []
        for name, value_description in updated_model.items():
            if isinstance(value_description, basestring):
                value_description = (
                    value_description,
                    "Injected by env2config.  Default value was: {0}. Default description was: {1}".format(
                        default_model.get(name, ('', None))[0],
                        default_model.get(name, (None, ''))[1],
                    )
                )
            value, description = value_description
            properties.append(E.property(
                E.name(name),
                E.value(value),
                E.description(description),
            ))

        xml = E.configuration(*properties)
        xml_text = etree.tostring(xml, pretty_print=True, encoding='utf-8', xml_declaration=True)
        return xml_text
示例#2
0
from lxml.builder import E
from lxml import etree

if __name__ == "__main__":
    test = E.root(
        E.configuration(E.param("ITEM1: p1"), E.param("ITEM1: p2"), E.param("ITEM1: p3"), name="Config 1"),
        E.configuration(
            E.param("ITEM2: p1"), E.param("ITEM2: p2"), E.param("ITEM2: p3"), E.param("ITEM2: p4"), name="Config 2"
        ),
    )
    data = etree.tostring(test, pretty_print=True, xml_declaration=True)

    print data

    root = etree.XML(data)

    configs = root.xpath("//configuration")

    for c in configs:
        params = c.xpath("param")
        print "%s attrs=%s" % (c.tag, c.attrib)
        for p in params:
            print "  %s" % p.text