python基础之读取xml
python怎么操作xml文件详细介绍链接:https://www.jb51.net/article/50812.htm
从结构上来说,xml很像常见的HTML超文本标记语言。不过超文本语言被设计用来显示数据,其焦点是数据的外观。xml被设计用来传输和存储数据,其焦点是数据的内容。
特征:
1. 标签对组成:<TEST></TEST>
2. 标签可以有属性<TEST Loop="1"></TEST>
3. 标签可以嵌入数据:<TEST>CPU</TEST>
4. 标签可以嵌入子标签(具有层级关系)
Python读取xml
import xml.dom.minidom
打开xml文件:xml.dom.minidom.parse()
每个节点都有nodeName, nodeValue, nodeType,nodeName为节点名字,nodeValue是节点的值,只对文本节点有效。catalog是ELEMENT_NODE类型
现在有以下几种:
'ATTRIBUTE_NODE'
'CDATA_SECTION_NODE'
'COMMENT_NODE'
'DOCUMENT_FRAGMENT_NODE'
'DOCUMENT_NODE'
'DOCUMENT_TYPE_NODE'
'ELEMENT_NODE'
'ENTITY_NODE'
'ENTITY_REFERENCE_NODE'
'NOTATION_NODE'
'PROCESSING_INSTRUCTION_NODE'
'TEXT_NODE'
举个例子,有这样一份xml:
abc.xml
<?xml version="1.0" encoding="utf-8"?>
<catalog>
<maxid>4</maxid>
<login username="pytest" passwd='123456'>
<caption>Python</caption>
<item id="4">
<caption>测试</caption>
</item>
</login>
<item id="2">
<caption>Zope</caption>
</item>
</catalog>
读取根节点:
from xml.dom.minidom import parse def read_xml_root_node(xml_path):
dom = parse(xml_path)
root = dom.documentElement
return root if __name__ == "__main__":
root_node = read_xml_root_node("abc.xml")
print(root_node.nodeName)
print(root_node.nodeType)
输出结果:
catalog
1
为什么打印出来的类型是1呢,1代表什么呢。参考nodeType。
获取子节点以及value:
from xml.dom.minidom import parse def read_xml_root_node(xml_path):
dom = parse(xml_path)
root = dom.documentElement
return root def read_child_label(node, label_name):
child = node.getElementsByTagName(label_name)
return child if __name__ == "__main__":
root_node = read_xml_root_node("abc.xml")
print(root_node.nodeName)
print(root_node.nodeType)
child_nodes = read_child_label(root_node, "maxid")
for child_node in child_nodes:
print(child_node.nodeName)
print(child_node.nodeType)
print(child_node.childNodes[0].nodeValue)
输出结果:
catalog
1
maxid
1
4
获取标签属性
from xml.dom.minidom import parse def read_xml_root_node(xml_path):
dom = parse(xml_path)
root = dom.documentElement
return root def read_child_label(node, label_name):
child = node.getElementsByTagName(label_name)
return child def read_attribute(node, attr_name):
attribute = node.getAttribute(attr_name)
return attribute if __name__ == "__main__":
root_node = read_xml_root_node("abc.xml")
print(root_node.nodeName)
print(root_node.nodeType)
child_nodes_login = read_child_label(root_node, "login")
for child_node in child_nodes_login:
attr_username = read_attribute(child_node, "username")
print(attr_username)
输出结果:
catalog
1
pytest
另一种模块读取xml的方法,可以遍历指定标签下的子标签
from xml.etree import ElementTree as ET
per = ET.parse("abc.xml")
p = per.findall("./login/item")
for opener in p:
for child in opener.getchildren():
print(child.tag, ":", child.text)
p = per.findall("./item")
for oneper in p:
for child in oneper.getchildren():
print(child.tag, ":", child.text)
输出结果:
caption : 测试
caption : Zope
python基础之读取xml的更多相关文章
- Python中如何读取xml的数据
<?xml version="1.0" encoding="utf-8" ?> - <catalog> <maxid>4&l ...
- Python基础之读取ini文件
基本使用方法 第一步:准备一份INI文件.如test1.ini [ITEMS] item1=1 item2=2 item3=3 item4=4 [ITEM1] test1=aaa [ITEM2] te ...
- Python基础之读写xml总结
参考文章:https://blog.csdn.net/weixin_42749767/article/details/82770563 先介绍xml.dom.minidom包,有一个读写的例子 rea ...
- 【304】python专题-读取xml文件
参考:XML DOM 参考手册(w3school) 参考:python专题-读取xml文件 参考:请问用python怎么修改xml的节点值? 1. 读取标签内的文本(Python) 如下的 xml 文 ...
- 【Python实例一】使用minidom读取xml文件
前言:最近刚在廖雪峰老师的网站里学习了Python的基础内容,想着循序渐进地找点实例练练手,网上看到有很多相关资料,决定针对感兴趣的内容实际编码实践一下,昨天刚好看到有关使用Python来读取XML文 ...
- python基础-7模块,第三方模块安装方法,使用方法。sys.path os sys time datetime hashlib pickle json requests xml
模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...
- python读取xml文件
关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 什么是 ...
- python专题-读取xml文件
关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 什么是 ...
- C#基础---浅谈XML读取以及简单的ORM实现
背景: 在开发ASP.NETMVC4 项目中,虽然web.config配置满足了大部分需求,不过对于某些特定业务,我们有时候需要添加新的配置文件来记录配置信息,那么XML文件配置无疑是我们选择的一个方 ...
随机推荐
- APP测试的主要内容
一.功能性测试:依据需求相关的文档编写测试用例进行测试 二.兼容性测试 系统版本:Android,ios 分辨率 网络情况 可用工具:testin 三.安装,升级,卸载测试 首次安装,覆盖安装,卸载后 ...
- 微软发布了Visual Studio 2022 Preview 1 以及.NET 6 Preview 5
Microsoft 今天宣布了Visual Studio 2022 的第一个预览版,并且同时也发布了.NET 6 Preview 5. https://devblogs.microsoft.com/v ...
- UF_VIEW 视图操作
Open C uc6400uc6401uc6402uc6403uc6404uc6405uc6406uc6408uc6409uc6430uc6431uc6432uc6433 获得视图3×3矩阵uc ...
- 工作中,如何衡量一个人的 JavaScript 编码水平?
1.立即执行函数 立即执行函数,即Immediately Invoked Function Expression (IIFE),正如它的名字,就是创建函数的同时立即执行.它没有绑定任何事件,也无需等待 ...
- 【题解】hdu 3586 Information Disturbing 二分 树形dp
题目描述 Information DisturbingTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/65536 K (Java ...
- 在Intellij IDEA中查看TestNG自带的测试报告
执行TestNG框架的测试用例,会生成测试报告.如果在IDEA中看不到,可做如下配置. 1. 点击IDEA工具栏中Run->Edit Configuration菜单,或者直接点击右上角编辑配置的 ...
- DOS命令行(9)——wmic-系统管理命令行工具
wmic 介绍与语法 WMI(Windows Management Instrumentation,Windows 管理规范)是一项核心的 Windows 管理技术:用户可以使用 WMI 管理本地和远 ...
- MySQL explain type 连接类型
查看使用的数据库版本 select version(); 5.7.30 官方提供的示例数据sakila 下载地址: https://dev.mysql.com/doc/index-other.html ...
- mysql字符集utf8和utf8mb4区别
1.起因 公司游戏项目上线第一天,出现单个区服异常宕机的问题,根据日志排查下来,连接数据的时候报错,后面排查是因为有玩家插入Emoji 等表情导致无法存储如数据库,数据库字符集编码为utf8,后续改成 ...
- Zabbix5.0微信报警
3.1.注测企业微信: 3.2.企业微信注册成功后进入后台管理: 3.3.添加一个部门,并记住部门id: #我这里添加的子部门ID为2 3.4.添加一个用户到上面创建的部门里面(这里采取直接将管理员添 ...