python 解析XML python模块xml.dom解析xml实例代码


Posted in Python onFebruary 07, 2014

一 、python模块 xml.dom 解析XML的API

minidom.parse(filename)
加载读取XML文件

doc.documentElement
获取XML文档对象

node.getAttribute(AttributeName)
获取XML节点属性值

node.getElementsByTagName(TagName)
获取XML节点对象集合

node.childNodes #返回子节点列表。

node.childNodes[index].nodeValue
获取XML节点值

node.firstChild
#访问第一个节点。等价于pagexml.childNodes[0]

doc = minidom.parse(filename)
doc.toxml('UTF-8')
返回Node节点的xml表示的文本

Node.attributes["id"]
a.name #就是上面的 "id"
a.value #属性的值
访问元素属性

二、python解析xml文件的实例代码
1、创建user.xml文件,添加XMl节点

<?xml version="1.0" encoding="UTF-8" ?>
<users>
    <user id="1000001">
        <username>Admin</username>
        <email>admin@live.cn</email>
        <age>23</age>
        <sex>男</sex>
    </user>
    <user id="1000002">
        <username>Admin2</username>
        <email>admin2@live.cn</email>
        <age>22</age>
        <sex>男</sex>
    </user>
    <user id="1000003">
        <username>Admin3</username>
        <email>admin3@live.cn</email>
        <age>27</age>
        <sex>男</sex>
    </user>
    <user id="1000004">
        <username>Admin4</username>
        <email>admin4@live.cn</email>
        <age>25</age>
        <sex>女</sex>
    </user>
    <user id="1000005">
        <username>Admin5</username>
        <email>admin5@live.cn</email>
        <age>20</age>
        <sex>男</sex>
    </user>
    <user id="1000006">
        <username>Admin6</username>
        <email>admin6@live.cn</email>
        <age>23</age>
        <sex>女</sex>
    </user>
</users>

2、Demo.py解析user.xml文档数据

# -*- coding:utf-8 -*-
"""
* User: lhj588
* Date: 11-11-9
* Time: 13:20
* Desc:
""" 
from  xml.dom import  minidom
def get_attrvalue(node, attrname):
     return node.getAttribute(attrname) if node else ''
def get_nodevalue(node, index = 0):
    return node.childNodes[index].nodeValue if node else ''
def get_xmlnode(node,name):
    return node.getElementsByTagName(name) if node else []
def xml_to_string(filename='user.xml'):
    doc = minidom.parse(filename)
    return doc.toxml('UTF-8')
def get_xml_data(filename='user.xml'):
    doc = minidom.parse(filename) 
    root = doc.documentElement
    user_nodes = get_xmlnode(root,'user')
    user_list=[]
    for node in user_nodes: 
        user_id = get_attrvalue(node,'id') 
        node_name = get_xmlnode(node,'username')
        node_email = get_xmlnode(node,'email')
        node_age = get_xmlnode(node,'age')
        node_sex = get_xmlnode(node,'sex')
        user_name =get_nodevalue(node_name[0]).encode('utf-8','ignore')
        user_email = get_nodevalue(node_email[0]).encode('utf-8','ignore') 
        user_age = int(get_nodevalue(node_age[0]))
        user_sex = get_nodevalue(node_sex[0]).encode('utf-8','ignore') 
        user = {}
        user['id'] , user['username'] , user['email'] , user['age'] , user['sex'] = (
            int(user_id), user_name , user_email , user_age , user_sex
        )
        user_list.append(user)
    return user_list
def test_xmltostring():
    print xml_to_string()
def test_laod_xml():
    user_list = get_xml_data()
    for user in user_list :
        #print user['sex']
        print '-----------------------------------------------------'
        if user:
            user_str='编   号:%d\n用户名:%s\n性   别:%s\n年   龄:%s\n邮   箱:%s\n ' % (int(user['id']) , user['username'], user['sex'] , user['age'] , user['email'])
            print user_str
            print '====================================================='
if __name__ == "__main__":
    test_xmltostring()
    test_laod_xml()

3、测试效果
A、测试toxml
demo.py 文件中修改成
if __name__ == "__main__":
    test_xmltostring()

本节是 python 解析XML python模块xml.dom解析xml实例 第二部分的内容。
执行打印结果:

<user id="1000001">
        <username>Admin</username>
        <email>admin@live.cn</email>
        <age>23</age>
        <sex>男</sex>
    </user>
<user id="1000002">
        <username>Admin2</username>
        <email>admin2@live.cn</email>
        <age>22</age>
        <sex>男</sex>
    </user>
<user id="1000003">
        <username>Admin3</username>
        <email>admin3@live.cn</email>
        <age>27</age>
        <sex>男</sex>
    </user>
<user id="1000004">
        <username>Admin4</username>
        <email>admin4@live.cn</email>
        <age>25</age>
        <sex>女</sex>
    </user>
<user id="1000005">
        <username>Admin5</username>
        <email>admin5@live.cn</email>
        <age>20</age>
        <sex>男</sex>
    </user>
<user id="1000006">
        <username>Admin6</username>
        <email>admin6@live.cn</email>
        <age>23</age>
        <sex>女</sex>
    </user>

B、测试解析XML
demo.py 文件中修改成
   if __name__ == "__main__":
        test_laod_xml()

执行打印出结果:
-----------------------------------------------------
编   号:1000001
用户名:Admin
性   别:男
年   龄:23
邮   箱:admin@live.cn

=====================================================
-----------------------------------------------------
编   号:1000002
用户名:Admin2
性   别:男
年   龄:22
邮   箱:admin2@live.cn

=====================================================
-----------------------------------------------------
编   号:1000003
用户名:Admin3
性   别:男
年   龄:27
邮   箱:admin3@live.cn

=====================================================
-----------------------------------------------------
编   号:1000004
用户名:Admin4
性   别:女
年   龄:25
邮   箱:admin4@live.cn

=====================================================
-----------------------------------------------------
编   号:1000005
用户名:Admin5
性   别:男
年   龄:20
邮   箱:admin5@live.cn

=====================================================
-----------------------------------------------------
编   号:1000006
用户名:Admin6
性   别:女
年   龄:23
邮   箱:admin6@live.cn

=====================================================

Python 相关文章推荐
Python中关于字符串对象的一些基础知识
Apr 08 Python
Python字符串格式化输出方法分析
Apr 13 Python
Python中pandas dataframe删除一行或一列:drop函数详解
Jul 03 Python
将Django项目部署到CentOs服务器中
Oct 18 Python
python进行TCP端口扫描的实现
Dec 21 Python
在python中实现同行输入/接收多个数据的示例
Jul 20 Python
详解pandas中MultiIndex和对象实际索引不一致问题
Jul 23 Python
python使用html2text库实现从HTML转markdown的方法详解
Feb 21 Python
Python3 shelve对象持久存储原理详解
Mar 23 Python
python字典的值可以修改吗
Jun 29 Python
python实现数字炸弹游戏
Jul 17 Python
java字符串格式化输出实例讲解
Jan 06 Python
python合并文本文件示例
Feb 07 #Python
python实现哈希表
Feb 07 #Python
python处理cookie详解
Feb 07 #Python
urllib2自定义opener详解
Feb 07 #Python
python解析html开发库pyquery使用方法
Feb 07 #Python
python3.3实现乘法表示例
Feb 07 #Python
zbar解码二维码和条形码示例
Feb 07 #Python
You might like
大师制作的中短波矿石收音机
2020/04/02 无线电
抓取并下载CSS中所有图片文件的php代码
2011/09/26 PHP
处理单名多值表单的详解
2013/06/08 PHP
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
jQuery html() in Firefox (uses .innerHTML) ignores DOM changes
2010/03/05 Javascript
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
jquery重复提交请求的原因浅析
2014/05/23 Javascript
举例说明JavaScript中的实例对象与原型对象
2016/03/11 Javascript
关于 angularJS的一些用法
2017/11/29 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
解决vue elementUI中table里数字、字母、中文混合排序问题
2020/01/07 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
微信小程序实现底部弹出模态框
2020/11/18 Javascript
js动态添加带圆圈序号列表的实例代码
2021/02/18 Javascript
Python之eval()函数危险性浅析
2014/07/03 Python
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
Python3遍历目录树实现方法
2015/05/22 Python
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
Python 将 QQ 好友头像生成祝福语的实现代码
2020/05/03 Python
keras 多任务多loss实例
2020/06/22 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
2020/07/03 Python
100%有机精油,美容油:House of Pure Essence
2018/10/30 全球购物
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
PHP面试题大全
2015/10/16 面试题
装修致歉信
2014/01/15 职场文书
培训主管岗位职责
2014/02/01 职场文书
学生党支部先进事迹
2014/02/04 职场文书
2016新春团拜会致辞
2015/08/01 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang
Android开发手册Chip监听及ChipGroup监听
2022/06/10 Java/Android
Win11 Build 22000.829更新补丁KB5015882发布(附更新修复内容汇总)
2022/07/15 数码科技