zoukankan      html  css  js  c++  java
  • [蟒蛇菜谱]Python获取任意xml节点的值

    # -*- coding: utf-8 -*-
    import xml.dom.minidom
    ELEMENT_NODE = xml.dom.Node.ELEMENT_NODE
    
    class SimpleXmlGetter(object):
        def __init__(self, data):
            if type(data) == str:
                self.root = xml.dom.minidom.parse(data)
            else:
                self.root = data
    
        def __getattr__(self, name):        #support . operation
            if name == 'data':
                return self.root.firstChild.data
            for c in self.root.childNodes:
                if c.nodeType == ELEMENT_NODE and c.tagName == name:
                    return SimpleXmlGetter(c)
    
        def __getitem__(self, index):       #support [] operation
            eNodes = [ e for e in self.root.parentNode.childNodes
                        if e.nodeType == ELEMENT_NODE and e.tagName == self.root.tagName]
            return SimpleXmlGetter(eNodes[index])
    
        def __call__(self, *args, **kwargs):  #support () openration, for query conditions
            for e in self.root.parentNode.childNodes:
                if e.nodeType == ELEMENT_NODE:
                    for key in kwargs.keys():
                         if e.getAttribute(key) != kwargs[key]:
                            break
                    else:
                        return SimpleXmlGetter(e)
    
    if __name__ == "__main__":
        x = SimpleXmlGetter("sysd.xml")
        print x.sysd.sysagent.param[2].data
        print x.sysd.sysagent.param(name="querytimeout", type="second").data
    
  • 相关阅读:
    Pascal's Triangle
    Pascal's Triangle II
    贪心算法入门
    Jump Game
    Symmetric Tree
    Reverse Words in a String
    [BZOJ2342][Shoi2011]双倍回文
    [HDU3068]最长回文
    [POJ1984]Navigation Nightmare
    [BZOJ3295][Cqoi2011]动态逆序对
  • 原文地址:https://www.cnblogs.com/tuzkee/p/3687885.html
Copyright © 2011-2022 走看看