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
    
  • 相关阅读:
    Java密钥库的不同类型 -- 概述
    【Spring Boot】Filter
    【VUE】开发环境
    【Java Web开发学习】Spring 注解
    【TongWeb】问题记录
    python的u,r,b分别什么意思?
    nil
    goland安装
    vscode调试和设置
    函数类型
  • 原文地址:https://www.cnblogs.com/tuzkee/p/3687885.html
Copyright © 2011-2022 走看看