首页 > 编程 > Python > 正文

python解析xml模块封装代码

2020-02-23 05:07:01
字体:
来源:转载
供稿:网友

有如下的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()   

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表