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. APP测试的主要内容

    一.功能性测试:依据需求相关的文档编写测试用例进行测试 二.兼容性测试 系统版本:Android,ios 分辨率 网络情况 可用工具:testin 三.安装,升级,卸载测试 首次安装,覆盖安装,卸载后 ...

  2. 微软发布了Visual Studio 2022 Preview 1 以及.NET 6 Preview 5

    Microsoft 今天宣布了Visual Studio 2022 的第一个预览版,并且同时也发布了.NET 6 Preview 5. https://devblogs.microsoft.com/v ...

  3. UF_VIEW 视图操作

    Open C   uc6400uc6401uc6402uc6403uc6404uc6405uc6406uc6408uc6409uc6430uc6431uc6432uc6433  获得视图3×3矩阵uc ...

  4. 工作中,如何衡量一个人的 JavaScript 编码水平?

    1.立即执行函数 立即执行函数,即Immediately Invoked Function Expression (IIFE),正如它的名字,就是创建函数的同时立即执行.它没有绑定任何事件,也无需等待 ...

  5. 【题解】hdu 3586 Information Disturbing 二分 树形dp

    题目描述 Information DisturbingTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/65536 K (Java ...

  6. 在Intellij IDEA中查看TestNG自带的测试报告

    执行TestNG框架的测试用例,会生成测试报告.如果在IDEA中看不到,可做如下配置. 1. 点击IDEA工具栏中Run->Edit Configuration菜单,或者直接点击右上角编辑配置的 ...

  7. DOS命令行(9)——wmic-系统管理命令行工具

    wmic 介绍与语法 WMI(Windows Management Instrumentation,Windows 管理规范)是一项核心的 Windows 管理技术:用户可以使用 WMI 管理本地和远 ...

  8. MySQL explain type 连接类型

    查看使用的数据库版本 select version(); 5.7.30 官方提供的示例数据sakila 下载地址: https://dev.mysql.com/doc/index-other.html ...

  9. mysql字符集utf8和utf8mb4区别

    1.起因 公司游戏项目上线第一天,出现单个区服异常宕机的问题,根据日志排查下来,连接数据的时候报错,后面排查是因为有玩家插入Emoji 等表情导致无法存储如数据库,数据库字符集编码为utf8,后续改成 ...

  10. Zabbix5.0微信报警

    3.1.注测企业微信: 3.2.企业微信注册成功后进入后台管理: 3.3.添加一个部门,并记住部门id: #我这里添加的子部门ID为2 3.4.添加一个用户到上面创建的部门里面(这里采取直接将管理员添 ...