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 用户登录验证的小例子
Mar 06 Python
Python3中常用的处理时间和实现定时任务的方法的介绍
Apr 07 Python
在Docker上开始部署Python应用的教程
Apr 17 Python
python实现统计代码行数的方法
May 22 Python
详解Python 数据库 (sqlite3)应用
Dec 07 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
Sep 08 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
Aug 22 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
May 28 Python
Python 实现数据结构-循环队列的操作方法
Jul 17 Python
python如何提升爬虫效率
Sep 27 Python
Python模拟键盘输入自动登录TGP
Nov 27 Python
python基于openpyxl生成excel文件
Dec 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
PHP中实现汉字转区位码应用源码实例解析
2010/06/14 PHP
Yii框架实现多数据库配置和操作的方法
2017/05/25 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
2020/02/07 PHP
从父页面读取和操作iframe中内容方法
2009/07/25 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
jquery插件validate验证的小例子
2013/05/08 Javascript
浅析JavaScript中的类型和对象
2013/11/29 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
jQuery实现带延迟效果的滑动菜单代码
2015/09/02 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
学习Bootstrap滚动监听 附调用方法
2016/07/02 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
2016/07/26 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
JS匿名函数实例分析
2016/11/26 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
javascript实现简单的可随机变色网页计算器示例
2016/12/30 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
2019/12/29 Javascript
ES2020系列之空值合并运算符 '??'
2020/07/22 Javascript
[01:05:40]VG vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python中的reduce内建函数使用方法指南
2014/08/31 Python
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
使用Python OpenCV为CNN增加图像样本的实现
2019/06/10 Python
Python while循环使用else语句代码实例
2020/02/07 Python
HTML5为输入框添加语音输入功能的实现方法
2017/02/06 HTML / CSS
详解使用双缓存解决Canvas clearRect引起的闪屏问题
2019/04/29 HTML / CSS
盖尔斯工厂店:GUESS Factory
2020/01/21 全球购物
采购意向书范本
2014/03/31 职场文书
《开国大典》教学反思
2014/04/19 职场文书
关于颐和园的导游词
2015/01/30 职场文书
司法廉洁教育心得体会
2016/01/20 职场文书
Go语言基础知识点介绍
2021/07/04 Golang
Win11安装升级时提示“该电脑必须支持安全启动”
2022/04/19 数码科技