使用minidom解析xml
2010-09-22 11:24:24 来源:WEB开发网最近在研究python解析xml。python从来不缺解析xml的库,我分析了一下,综合来看有两个非常合适,一个是大名鼎鼎很低调的xml.dom,一个是强大而且高效的lxml。先来学习minidom的。
这个类实现的readNodes作用是读取节点值和相应的属性
readElementByName是根据输入的元素名字来读取其子元素的结点属性
不是很难理解
1 #!/usr/bin/env python
2 #coding=utf-8
3 from xml.dom import minidom
4
5 class Xml_dom():
6 def readNodes(self,domElement):
7 for nodes in domElement.childNodes:
8 if nodes.nodeType == 1:
9 print nodes.nodeName+'====================='
10 for keys in nodes.attributes.keys():
11 print nodes.attributes[keys].name+'='+nodes.attributes[keys].value
12 if len(nodes.childNodes)==1:
13 print nodes.nodeName+':'+nodes.childNodes[0].nodeValue
14 else:
15 self.readNodes(nodes)
16 def readElementByName(self,elementList):
17 for elements in elementList:
18 if elements.nodeType == 1:
19 print elements.nodeName+'>>>>>>>>>>>>>>>>>>>>>>>'
20 for keys in elements.attributes.keys():
21 print elements.attributes[keys].name+'='+elements.attributes[keys].value
22 if len(elements.childNodes) == 1:
23 print elements.nodeName+':'+elements.childNodes[0].nodeValue
24 else:
25 self.readElementByName(elements.childNodes)
26 def __init__(self,filename,elename):
27 self.dom = minidom.parse(filename)
28 self.root = self.dom.documentElement
29 print '=========xml_dom==============n'
30 self.readNodes(self.root)
31 print '=========end===============n'
32 print '>>>>>>>>>xml_dom>>>>>>>>>>n'
33 el = self.dom.getElementsByTagName(elename)
34 self.readElementByName(el)
35 print ">>>>>>>>>end>>>>>>>>>>>>"
36
37 if __name__=='__main__':
38 # a = Xml_dom('rule_sqlInj.xml','configs')
39 a = Xml_dom('waf_sqlrule.xml','prot')
更多精彩
赞助商链接