本文实例讲述了Python获取任意xml节点值的方法。分享给大家供大家参考。具体实现方法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# -*- 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 |
希望本文所述对大家的Python程序设计有所帮助。