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文件配置无疑是我们选择的一个方 ...
随机推荐
- 【NX二次开发】Block UI 超级点
属性说明 属性 类型 描述 常规 BlockID String 控件ID Enable Logical 是否可操作 Group ...
- Django基础之模型层(01)
内容概要 查询关键字 MySQL select from where group by having order by distinct limit r ...
- Python小白的数学建模课-09 微分方程模型
小白往往听到微分方程就觉得害怕,其实数学建模中的微分方程模型不仅没那么复杂,而且很容易写出高水平的数模论文. 本文介绍微分方程模型的建模与求解,通过常微分方程.常微分方程组.高阶常微分方程 3个案例手 ...
- 海康威视ISC平台的VUE二次开发接入实现
第一步 取得ISC平台的appkey以及secret,以及安装ISC平台的主机IP,这一步至关重要!!! 第二步 由于目前我所在的公司项目前端的代码均由vue所实现,所以利用vue-cli创建一个最简 ...
- unity的安装,配置,及问题
下载unity 在官网下载unity unity有三个版本,个人版免费,pro和专业版收费. 个人版 在导出exe文件时不能去掉水印片头.其他版本可以. 地址[https://store.unity. ...
- 22、oracle子查询
22.1.什么是子查询: 1.子查询就是在一条sql语句中嵌入select语句: 2.子查询可区分为关联子查询和非关联子查询,他们和主查询之间的执行顺序和关系是不同的: 22.2.关联子查询: 1.说 ...
- codeforces 830E dp
大致题意: n场比赛,k个钱币.赢一场获得一个钱币,输一场失去一个钱币,一旦钱币数量为2k个或者0个,就马上离开比赛.给出n个长度字符串,由W,D,L,?四个字符组成,W表示赢,L表示输,D表示平局, ...
- acwing 890. 能被整除的数
#include<bits/stdc++.h> #define ll long long using namespace std; int m; int n,p[20]; int sum, ...
- SpringCloud:路由ZUUL的配置详解
以下是两种配置文件的配置方式,可以根据需要选取对自己项目有利的配置. 自定义访问路径(path) 配置application.yml文件 #provider-user:是你的微服务模块的名称,及spr ...
- APP-SECURITY-404 组件导出漏洞复现
参考资料:https://github.com/wnagzihxa1n/APP-SECURITY-404/blob/master/2.%E7%BB%84%E4%BB%B6%E5%AF%BC%E5%87 ...