有如下的xml文件:
代码如下:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<childs>
<child name='first' >1</child>
<child value="2">2</child>
</childs>
</root>
下面介绍python解析xml文件的几种方法,使用python模块实现。
方式1,python模块实现自动遍历所有节点:
代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from xml.sax.handler import ContentHandler
from xml.sax import parse
class TestHandle(ContentHandler):
def __init__(self, inlist):
self.inlist = inlist
def startElement(self,name,attrs):
print 'name:',name, 'attrs:',attrs.keys()
def endElement(self,name):
print 'endname',name
def characters(self,chars):
print 'chars',chars
self.inlist.append(chars)
if __name__ == '__main__':
lt = []
parse('test.xml', TestHandle(lt))
print lt
结果:
[html] view plaincopy
name: root attrs: []
chars
name: childs attrs: []
chars
name: child attrs: [u'name']
chars 1
endname child
chars
name: child attrs: [u'value']
chars 2
endname child
chars
endname childs
chars
endname root
[u'/n', u'/n', u'1', u'/n', u'2', u'/n', u'/n']
方式2,python模块实现获取根节点,按需查找指定节点:
代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from xml.dom import minidom
xmlstr = '''''<?xml version="1.0" encoding="UTF-8"?>
<hash>
<request name='first'>/2/photos/square/type.xml</request>
<error_code>21301</error_code>
<error>auth faild!</error>
</hash>
'''
def doxml(xmlstr):
dom = minidom.parseString(xmlstr)
print 'Dom:'
print dom.toxml()
root = dom.firstChild
print 'root:'
print root.toxml()
新闻热点
疑难解答