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 相关文章推荐
Python3基础之list列表实例解析
Aug 13 Python
Python安装Imaging报错:The _imaging C module is not installed问题解决方法
Aug 22 Python
Python实现扫描局域网活动ip(扫描在线电脑)
Apr 28 Python
python链接Oracle数据库的方法
Jun 28 Python
对python3 中方法各种参数和返回值详解
Dec 15 Python
Python中的几种矩阵乘法(小结)
Jul 10 Python
使用Python求解带约束的最优化问题详解
Feb 11 Python
在Django中预防CSRF攻击的操作
Mar 13 Python
使用python从三个角度解决josephus问题的方法
Mar 27 Python
详细分析Python collections工具库
Jul 16 Python
Python中猜拳游戏与猜筛子游戏的实现方法
Sep 04 Python
python+pytest接口自动化之token关联登录的实现
Apr 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
桌面中心(四)数据显示
2006/10/09 PHP
PHP的基本常识小结
2013/07/05 PHP
一个完整的PHP类包含的七种语法说明
2015/06/04 PHP
PHP 芝麻信用接入的注意事项
2016/12/01 PHP
再论Javascript的类继承
2011/03/05 Javascript
javascript学习笔记(八) js内置对象
2012/06/19 Javascript
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
使用jQuery时Form表单元素ID和name命名大忌
2014/03/06 Javascript
javascript日期计算实例分析
2015/06/29 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
JQuery标签页效果的两个实例讲解(4)
2015/09/17 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
2015/12/13 Javascript
三分钟带你玩转jQuery.noConflict()
2016/02/15 Javascript
基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
2016/02/29 Javascript
JavaScript中关于for循环删除数组元素内容时出现的问题
2016/11/21 Javascript
js读取本地文件的实例
2017/12/22 Javascript
Python实现希尔排序算法的原理与用法实例分析
2017/11/23 Python
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
使用Python监视指定目录下文件变更的方法
2018/10/15 Python
python中类的属性和方法介绍
2018/11/27 Python
python 自动批量打开网页的示例
2019/02/21 Python
Python Matplotlib绘图基础知识代码解析
2020/08/31 Python
Python 多进程、多线程效率对比
2020/11/19 Python
一个入门级python爬虫教程详解
2021/01/27 Python
HTML5开发动态音频图的实现
2020/07/02 HTML / CSS
女性时尚在线:IVRose
2019/02/23 全球购物
2013年入党人员的自我鉴定
2013/10/25 职场文书
大学生文员专业个人求职信范文
2014/01/05 职场文书
年终考核评语
2014/01/19 职场文书
水果连锁超市创业计划书
2014/01/24 职场文书
优秀团员个人事迹材料
2014/01/29 职场文书
楼面经理岗位职责范本
2014/02/18 职场文书
我的梦想演讲稿500字
2014/08/21 职场文书
2014年房地产工作总结范文
2014/11/19 职场文书
话题作文之成长
2019/12/09 职场文书
使用css样式设计一个简单的html登陆界面的实现
2021/03/30 HTML / CSS