2019独角兽企业重金招聘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 #属性的值
  访问元素属性

二、代码演示

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  minidomdef 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.documentElementuser_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_listdef 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_strprint '====================================================='if __name__ == "__main__":test_xmltostring()test_laod_xml()

3,3、测试效果

A、测试toxml

demo.py中文件修改成

if __name__ == "__main__":test_xmltostring()

查看打印结果:

<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.cnB、测试解析XML
demo.py 文件中修改成
=====================================================
-----------------------------------------------------
编   号:1000006
用户名:Admin6
性   别:女
年   龄:23
邮   箱:admin6@live.cn=====================================================

转载于:https://my.oschina.net/yangting880815/blog/472173

python 解析XML xml.dom相关推荐

  1. xml的学习和使用python解析读取xml文件

    1. XML的介绍 XML 指可扩展标记语言(EXtensible Markup Language). 和json类似也是用于存储和传输数据,还可以用作配置文件. 类似于HTML超文本标记语言,但是H ...

  2. 用Python解析AndroidManifest.xml文件找MainActivity

    写在前面的话 这个是一篇水博客,因为我知道只要是个大二的小朋友就可以搞定,我大二就一天在搞这些事情,今天纯属吃饱了撑着,想敲键盘,等实验结果然后随便写写.我知道大家都会的,不会的小朋友随便看看然后自己 ...

  3. python解析html xml最好的模块_python中处理xml的模块哪个好?

    python中可以使用BeautifulSoup4或pyQuery模块处理xml文件.pyQuery模块比较适合于对CSS选择器等的支持,BeautifulSoup4模块使用简单. Beautiful ...

  4. 【代码片段收集】Python解析AndroidManifest.xml

    写在前面的话 这个好像只适合我自己看,感觉有的代码片段复用率很高,总是反复需要用到.所以就整理一下,方便自己查找. # find the MainActivity and let the MainAc ...

  5. python解析html xml最好的模块_Python HTML/XML解析器BeautifulSoup(爬虫解析器)

    The Dormouse's story Once upon a time there were three little sisters; and their names were Elsie, L ...

  6. Python 解析构建数据大杂烩 -- csv、xml、json、excel

    Python 可以通过各种库去解析我们常见的数据.其中 csv 文件以纯文本形式存储表格数据,以某字符作为分隔值,通常为逗号:xml 可拓展标记语言,很像超文本标记语言 Html ,但主要对文档和数据 ...

  7. python解析log文件_python解析基于xml格式的日志文件

    大家中午好,由于过年一直还没回到状态,好久没分享一波小知识了,今天,继续给大家分享一波Python解析日志的小脚本. 首先,同样的先看看日志是个啥样. 都是xml格式的,是不是看着就头晕了??没事,我 ...

  8. python解析dom,关于Python解析xml dom的简单应用

    关于Python解析xml dom的简单应用 from xml.dom import minidom try: xmlfile = open("path.xml", "a ...

  9. python处理xml文件_Python处理XML之DOM解析

    print "===========DOM方式解析XML文档=======================" ''' DOM 将XML文档定义为如下格式: 根节点 || 元素节点= ...

最新文章

  1. --single-transaction 参数对应MyISAM引擎和InnoDB引擎
  2. 深入浅出 JavaScript 数组 v0.5
  3. 2018年SIAF 广州国际工业自动化技术及装备展览会下周隆重开幕
  4. 使用JavaParser从源文件中提取JavaDoc文档
  5. linux shell 原理,linux下shell的工作原理
  6. 远程桌面服务器怎么重启计算机,电脑怎么样远程重新启动
  7. 半导体行业半双工(HDX)低频工业RFID读写器|读卡器CK-S640-AP60E之MODBUS TCP 协议说明
  8. linux操作系统shell脚本编程实验报告,Linux操作系统实验报告|linux实验报告总结
  9. 【数学建模】第一讲-层次分析法
  10. Pr 音频效果参考:混响
  11. 移动前端开发与web前端开发的区别
  12. Word2Vec模型配置参数
  13. 计算机查重公式编辑器,知网查重文字公式编辑器吗
  14. HDU 5294 Tricks Device 最短路最小割 -
  15. Linux系统搭建GPU加速的PyTorch环境
  16. 小米手机第三方卡刷软件_小米手机通用详细图形刷机教程(四): 刷入第三方系统...
  17. python实现简单舒尔方格
  18. 教学教法改革效果评估的4种方法
  19. 带你学习如何更好的使用uni-app(一)
  20. quasar使用keep alive警告 Component inside <Transition> renders non-element root node

热门文章

  1. python实现字符串中中文在前,数字在后且按从小到大排序
  2. java有不过_不过而而
  3. 允许使用抽象类类型 isearchboxinfo 的对象_final关键字、抽象类以及接口
  4. system volume information怎么删除_文件系统怎么让Linux内核认识自己
  5. +[NSTimer scheduledTimerWithTimeInterval:repeats:block:]: unrecognized selector sent to xxx
  6. 在Java版中被移除的物品,盘点Minecraft曾“移除”的5个物品,Mojang反悔?1.14即将加入!...
  7. 文件打开不关闭程序会输出吗_干货!很多资深用户都不知道的10个BOOX阅读器使用技巧,很实用!...
  8. 可能存在无限递归_做事永远无头无尾?人生中的递归现象
  9. 灰色关联投影法python_python灰色关联算法(灰度关联算法)
  10. oracle 删除补全日志组_【REDO】删除REDO LOG重做日志组后需要手工删除对应的日志文件(转)...