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中的正则表达式(re模块)
Oct 17 Python
Python生成8位随机字符串的方法分析
Dec 05 Python
快速了解Python开发中的cookie及简单代码示例
Jan 17 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
May 24 Python
Python实现基于KNN算法的笔迹识别功能详解
Jul 09 Python
tensorflow: variable的值与variable.read_value()的值区别详解
Jul 30 Python
简单谈谈python基本数据类型
Sep 26 Python
Python3 串口接收与发送16进制数据包的实例
Jun 12 Python
Python Pandas 箱线图的实现
Jul 23 Python
在tensorflow中实现去除不足一个batch的数据
Jan 20 Python
python统计字符的个数代码实例
Feb 07 Python
python中有帮助函数吗
Jun 19 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之sprintf函数用法详解
2014/11/12 PHP
PHP中的命名空间详细介绍
2015/07/02 PHP
win7系统配置php+Apache+mysql环境的方法
2015/08/21 PHP
Linux环境下php实现给网站截图的方法
2016/05/03 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
PHP递归获取目录内所有文件的实现方法
2016/11/01 PHP
php格式化时间戳
2016/12/17 PHP
php实现统计二进制中1的个数算法示例
2018/01/23 PHP
javascript 自动转到命名锚记
2009/01/10 Javascript
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
jquery获取一组checkbox的值(实例代码)
2013/11/04 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/25 Javascript
Javascript进制转换实例分析
2015/05/14 Javascript
JS打字效果的动态菜单代码分享
2015/08/21 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
2016/04/04 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
2016/09/01 Javascript
NodeJS遍历文件生产文件列表功能示例
2017/01/22 NodeJs
超全面的vue.js使用总结
2017/02/12 Javascript
javascript简单写的判断电话号码实例
2017/05/24 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
vue点击按钮动态创建与删除组件功能
2019/12/29 Javascript
Angular 多模块项目构建过程
2020/02/13 Javascript
[02:36]DOTA2混沌骑士 英雄基础教程
2013/11/26 DOTA
Python 专题一 函数的基础知识
2017/03/16 Python
pygame游戏之旅 创建游戏窗口界面
2018/11/20 Python
程序员写Python时的5个坏习惯,你有几条?
2018/11/26 Python
tensorflow2.0的函数签名与图结构(推荐)
2020/04/28 Python
美国运动鞋和服装网上商店:YCMC
2018/09/15 全球购物
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
物理学专业自荐信
2014/06/11 职场文书
消防演习感想
2015/08/10 职场文书
《梅花魂》教学反思
2016/02/18 职场文书
责任书格式
2019/04/18 职场文书