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读取图片EXIF信息类库介绍和使用实例
Jul 10 Python
python查询sqlite数据表的方法
May 08 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
Sep 26 Python
python遍历一个目录,输出所有的文件名的实例
Apr 23 Python
Python设计模式之适配器模式原理与用法详解
Jan 15 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
May 03 Python
Python 通过打码平台实现验证码的实现
May 13 Python
python SQLAlchemy的Mapping与Declarative详解
Jul 04 Python
pandas DataFrame 数据选取,修改,切片的实现
Apr 24 Python
TensorFlow-gpu和opencv安装详细教程
Jun 30 Python
Python logging模块进行封装实现原理解析
Aug 07 Python
Django3中的自定义用户模型实例详解
Aug 23 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
粗略计算在线时间,bug:ip相同
2006/12/09 PHP
PHP静态新闻列表自动生成代码
2007/06/14 PHP
10个php函数实用却不常见
2015/10/13 PHP
使用PHPExcel导出Excel表
2018/09/08 PHP
关于laravel后台模板laravel-admin select框的使用详解
2019/10/03 PHP
jquery之empty()与remove()区别说明
2010/09/10 Javascript
Extjs EditorGridPanel中ComboBox列的显示问题
2011/07/04 Javascript
Javascript模块化编程(三)require.js的用法及功能介绍
2013/01/17 Javascript
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
javascript删除字符串最后一个字符
2014/01/14 Javascript
qq悬浮代码(兼容各个浏览器)
2014/01/29 Javascript
jquery解决客户端跨域访问问题
2015/01/06 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
jQuery实现淡入淡出二级下拉导航菜单的方法
2015/08/28 Javascript
jQuery弹出div层过2秒自动消失
2016/11/29 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
纯js实现页面返回顶部的动画(超简单)
2017/08/10 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
2018/02/06 Javascript
基于AngularJs select绑定数字类型的问题
2018/10/08 Javascript
JS Web Flex弹性盒子模型代码实例
2020/03/10 Javascript
Python元组操作实例分析【创建、赋值、更新、删除等】
2017/07/24 Python
python实现飞机大战
2018/09/11 Python
pycharm 更改创建文件默认路径的操作
2020/02/15 Python
python实现测试工具(一)——命令行发送get请求
2020/10/19 Python
英国首屈一指的票务公司:See Tickets
2019/05/11 全球购物
新西兰最大、占有率最高的综合性药房:PharmacyDirect药房中文网
2020/11/03 全球购物
学生党员思想汇报
2013/12/28 职场文书
20岁生日感言
2014/01/13 职场文书
校园歌手大赛策划书
2014/01/17 职场文书
促销活动总结怎么写
2014/06/25 职场文书
售房协议书范本2014
2014/10/23 职场文书
2015年度个人业务工作总结
2015/04/27 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书
2016年母亲节广告语
2016/01/28 职场文书
Spring中bean的生命周期之getSingleton方法
2021/06/30 Java/Android
Golang MatrixOne使用介绍和汇编语法
2022/04/19 Golang