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文件配置无疑是我们选择的一个方 ...
随机推荐
- 聊一聊 Spring Boot 中 RESTful 接口设计规范
在设计接口时,有很多因素要考虑,如接口的业务定位,接口的安全性,接口的可扩展性.接口的稳定性.接口的跨域性.接口的协议规则.接口的路径规则.接口单一原则.接口过滤和接口组合等诸多因素,本篇文章将简要分 ...
- 6.17考试总结(NOIP模拟8)[星际旅行·砍树·超级树·求和]
6.17考试总结(NOIP模拟8) 背景 考得不咋样,有一个非常遗憾的地方:最后一题少取膜了,\(100pts->40pts\),改了这么多年的错还是头一回看见以下的情景... T1星际旅行 前 ...
- 解决mac中adb: command not found
在Mac系统中,很多时候第一次在Android SDK中使用adb的时候.无法使用.会提示-bash: abd: command not found. 造成此类现象的原因是:未配置Android的环境 ...
- 使用 TypeScript,React,ANTLR 和 Monaco Editor 创建一个自定义 Web 编辑器(二)
译文来源 欢迎阅读如何使用 TypeScript, React, ANTLR4, Monaco Editor 创建一个自定义 Web 编辑器系列的第二章节, 在这之前建议您阅读使用 TypeScrip ...
- Excel的布尔值运算
TRUE被当做1进行加减乘除,例:1-TRUE=0. FALSE被当做0进行加减乘除,例:1-FALSE=1.(当做除数时,会因为分母为0返回错误值)
- 测试开发:推荐一款阿里最新 Python 自动化开源工具!
大家好,我是麦小米,是狂师老师全栈测开训练营中的一名学员. 如果之前做过iOS自动化的同学相信都知道,一直以来,iOS自动化的实现&执行都必须依赖 Mac 系统,其主要原因是因为需要通过 xc ...
- Jenkins CI&CD 自动化发布项目实战(下篇)
Jenkins CI&CD 自动化发布项目实战(下篇) 作者 刘畅 时间 2020-12-04 实验环境 centos7.5 主机名 ip 服务配置 软件 gitlab 172.16.1.71 ...
- SQL Server数据库阻塞,死锁查询
sql 查询卡顿数据库 SELECT SPID=p.spid, DBName = convert(CHAR(20),d.name), ProgramName = program_name, Login ...
- RabbitMQ 常用知识点总结
基础 为什么使用 MQ? 1.削峰:在某个模块接收到超过最大承受的并发量时,可以通过 MQ 排队来使这些削减同一时刻处理的消息量.减小并发量. 2.解耦:在发送 MQ 处理业务时,可以使业务代码与当前 ...
- 如何快速实现一个虚拟 DOM 系统
虚拟 DOM 是目前主流前端框架的技术核心之一,本文阐述如何实现一个简单的虚拟 DOM 系统. 为什么需要虚拟 DOM? 虚拟 DOM 就是一棵由虚拟节点组成的树,这棵树展现了真实 DOM 的结构.这 ...