网站首页 > 博客文章 正文
1. 介绍
1.1 介绍
福哥今天要教给大家使用Python处理XML文档。XML文档格式是一种比JSON文档格式更加复杂的一种文本文档格式,XML文档包括节点和属性两个元素,节点名称可以重复,一个节点上的属性名称必须唯一,节点名称和属性名称没有统一性要求,相比较JSON格式XML格式可以存储更加复杂的关系的数据结构。
Python操作XML文档推荐使用minidom这个库,minidom库在xml.dom这个包里面。
2. 安装
xml.dom.minidom不需要安装,默认就环境里就有了。
from xml.dom import minidom
3. 使用
3.1 生成文档
首先我们来学习使用minidom来创建一个XML文档,使用minidom创建XML文档有点麻烦,每create一个对象都要自己去append这个对象,所有对象都要通过Document来创建,实在繁琐。
newDoc = minidom.Document()
rootNode = newDoc.createElement('root')
newDoc.appendChild(rootNode)
firstNode = newDoc.createElement('firstNode')
firstNode.setAttribute("rowid", "1")
firstNode.setAttribute("tableid", "100")
rootNode.appendChild(firstNode)
idNode = newDoc.createElement('id')
firstNode.appendChild(idNode)
idText = newDoc.createTextNode('35')
idNode.appendChild(idText)
nameNode = newDoc.createElement('name')
firstNode.appendChild(nameNode)
nameText = newDoc.createTextNode('福哥')
nameNode.appendChild(nameText)
with open(rootDir + "/test.xml", "w", encoding="utf-8") as fo:
newDoc.writexml(fo, indent='', addindent='\t', newl='\n', encoding="utf-8")
fo.close()
3.2 解析文档
接着我们来解析这个XML文档。
可以使用childNodes进行逐级的遍历得到所有节点,但是XML文档的每个节点前后都会有一个#text节点,这个比较麻烦。
我们还可以使用getElementsByTagName来直接定位节点,福哥推荐这种方式来定位目标节点。注意即使只有一个子节点返回的也是一个数值,要记得取0位元素。
with open(rootDir + "/test.xml", "r", encoding="utf-8") as fo:
myDoc = minidom.parse(fo)
fo.close()
rootNode = myDoc.documentElement
# root child nodes
if rootNode.childNodes:
for d in range(0, len(rootNode.childNodes)):
myNode = rootNode.childNodes[d]
print(myNode.nodeName, myNode.nodeType)
if myNode.nodeName == "firstNode":
# attributes
if myNode.attributes:
myAttrs = myNode.attributes.items()
for e in range(0, len(myAttrs)):
myAttrName = myAttrs[e][0]
myAttrValue = myAttrs[e][1]
print(myNode.nodeName, "attribute: ", myAttrName, myAttrValue)
# child nodes
id = myNode.getElementsByTagName('id')
print(myNode.nodeName, "child node: ", id[0].childNodes[0].data)
name = myNode.getElementsByTagName('name')
print(myNode.nodeName, "child node: ", name[0].childNodes[0].data)
4. 总结
今天福哥带着童鞋们学习了使用Python去操作XML文档的技巧,福哥推荐使用minidom这个库,它足够简单,且足够应付我们日常的编程需要!
https://m.tongfu.net/home/35/blog/513421.html
猜你喜欢
- 2024-10-26 XML文件生成(xml文件生成软件)
- 2024-10-26 记一次完整的xml格式字符转换为map(全部通用)
- 2024-10-26 揭秘5.3k开发者的秘密武器:it-tools在线工具集,你不可不知!
- 2024-10-26 SpringBoot中如何让List和Json自动互转
- 2024-10-26 从零开始学Java之带你学习如何进行JSON解析
- 2024-10-26 AJAX 请求(Ajax 请求504网关超时)
- 2024-10-26 golang JSON处理(golang json unmarshal)
- 2024-10-26 json语法——javascript(json语法详解)
- 2024-10-26 Python实战013:如何将数据以JSON格式输出
- 2024-10-26 XMLHttpRequest 对象(360浏览器不能创建xmlhttprequest对象)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)