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的更多相关文章

  1. Python中如何读取xml的数据

    <?xml version="1.0" encoding="utf-8" ?> - <catalog> <maxid>4&l ...

  2. Python基础之读取ini文件

    基本使用方法 第一步:准备一份INI文件.如test1.ini [ITEMS] item1=1 item2=2 item3=3 item4=4 [ITEM1] test1=aaa [ITEM2] te ...

  3. Python基础之读写xml总结

    参考文章:https://blog.csdn.net/weixin_42749767/article/details/82770563 先介绍xml.dom.minidom包,有一个读写的例子 rea ...

  4. 【304】python专题-读取xml文件

    参考:XML DOM 参考手册(w3school) 参考:python专题-读取xml文件 参考:请问用python怎么修改xml的节点值? 1. 读取标签内的文本(Python) 如下的 xml 文 ...

  5. 【Python实例一】使用minidom读取xml文件

    前言:最近刚在廖雪峰老师的网站里学习了Python的基础内容,想着循序渐进地找点实例练练手,网上看到有很多相关资料,决定针对感兴趣的内容实际编码实践一下,昨天刚好看到有关使用Python来读取XML文 ...

  6. python基础-7模块,第三方模块安装方法,使用方法。sys.path os sys time datetime hashlib pickle json requests xml

    模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

  7. python读取xml文件

    关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 什么是 ...

  8. python专题-读取xml文件

    关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 什么是 ...

  9. C#基础---浅谈XML读取以及简单的ORM实现

    背景: 在开发ASP.NETMVC4 项目中,虽然web.config配置满足了大部分需求,不过对于某些特定业务,我们有时候需要添加新的配置文件来记录配置信息,那么XML文件配置无疑是我们选择的一个方 ...

随机推荐

  1. python通过字典实现购物车案例-用户端

    import os dict01 = { 'iphone' : { '5999' : { '总部位于美国' : '价格相对较贵', }, }, 'wahaha' : { '15' : { '总部位于中 ...

  2. Pytorch CNN网络MNIST数字识别 [超详细记录] 学习笔记(三)

    目录 1. 准备数据集 1.1 MNIST数据集获取: 1.2 程序部分 2. 设计网络结构 2.1 网络设计 2.2 程序部分 3. 迭代训练 4. 测试集预测部分 5. 全部代码 1. 准备数据集 ...

  3. Android Gradle插件

    目录 什么是Gradle 编写方法 buildSrc 基础概念 Extension 自定义Task Plugin Transformer Gradle用处 好文章 常见问题 Gradle插件练习地址: ...

  4. Unity不规则按钮点击区域(UGUI)

    文章目录 一. 前言 二. 最终效果 三. 实现 1.创建UICamera 2. UIPolygon节点 3. 编辑碰撞区域 5. 运行测试 6. UIPolygon代码 一. 前言 游戏开发中,可能 ...

  5. NUC980 运行 RT-Thread 驱动 SPI 接口 OLED 播放 badapple

    badapple 是什么,上网随便查了下,没看出个究竟,不过有个关于这个挺火的标签或者主题 < 有屏幕的地方就有 badapple >,网上有很多人用很多方式播放 badapple 动画, ...

  6. 2.QT浏览器控件设置“透明颜色”

    使用样式表或者设置背景颜色,使用 background-color:transparent 但,使用透明的颜色是不可行的: QColor(255,0,0,0)

  7. Zabbix5.0钉钉报警(centos7)

    2.1.到钉钉官网下载pc版钉钉,安装.注册.登陆: 钉钉下载地址:https://www.dingtalk.com/ 2.2.创建群聊和钉钉机器人: 1.创建群聊,把需要收到报警的人员都拉到这个群: ...

  8. 1、Linux下源码编译安装PostgreSQL

    操作系统:Centos7 说明:postgresql必须在postgres用户下初始化数据库和启动,否则报错. PostgreSQL的特性 PostgreSQL是一种几乎可以运行在各种平台上的免费的开 ...

  9. 9.10、mysql进程、状态在线修改参数重要知识

    1.-e :改参数表示不用登陆mysql就可以使用mysql的命令,有利于于加管道符对数据进行处理: mysql -uroot -p123456 -e "show databases;&qu ...

  10. 17、mysql主从同步Last_IO_Errno错误代码说明

    登录mysql从库:mysql> show slave status\G; Last_IO_Errno:1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败 1 ...