xml文件处理

什么是xml文件?

xml即可扩展标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。

从结构上,很像HTML超文本标记语言。但他们被设计的目的是不同的,具体如下:

  • XML 被设计用来传输和存储数据。
  • HTML 被设计用来显示数据。

比如如下格式:

<?xml version="1.0" encoding="utf-8"?>
<note>
<to id='001'>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

xml特征:

  • 它是有标签对组成,<aa></aa>
  • 标签可以有属性:<aa id='123'></aa>
  • 标签对可以嵌入数据:<aa>abc</aa>
  • 标签可以嵌入子标签(具有层级关系)

XMl文件结构

  • XML 文档形成了一种树结构,它从“根部”开始,然后扩展到“枝叶”。
  • 第一行是 XML 声明。它定义 XML 的版本 (1.0) 和所使用的编码
  • <note>是根元素,也称为根节点。
  • <to><from><heading><body>是子元素(子节点)
  • XML 文档必须包含根元素。该元素是所有其他元素的父元素

DOM文档对象模型

文档对象模型(Document Object Model,简称DOM),DOM 就是针对 HTML 和 XML 提供的一个API。什么意思?就是说为了能以编程的方法操作这个 HTML 的内容(比如添加某些元素、修改元素的内容、删除某些元素),我们把这个 HTML或xml 看做一个对象树(DOM树),它本身和里面的所有东西比如 <div></div> 这些标签都看做一个对象,每个对象都叫做一个节点(node)。

DOM 有什么用?

就是为了操作 HTML或xml 中的元素,比如说我们要通过 JS 把这个网页的标题改了,直接这样就可以了:

document.title = '123456';

创建xml文件

创建一个xml文件Class_info.xml 用来存储班级学生(姓名,年龄,城市),老师(姓名,年龄,城市)、教务账号(学生和老师的账号,密码)等信息。

<?xml version="1.0" encoding="UTF-8" ?>
<Class>
<student>
<name>张三</name> <!--元素节点,文本节点,属性节点-->
<age>28</age>
<city>北京</city>
</student> <student>
<name>李四</name>
<age>23</age>
<city>深圳</city>
</student> <student>
<name>王五</name>
<age>30</age>
<city>上海</city>
</student> <teacher>
<name>马保国</name>
<age>53</age>
<city>浙江</city>
</teacher> <account>
<login username="student" password="123456"/> <!--属性节点-->
<login username="teacher" password="888888"/> </account>
</Class>

xml节点

xml文件节点一般包含3类:

  1. 元素节点
  2. 文本节点
  3. 属性节点

每个节点都拥有包含着关于节点某些信息的属性。这些属性是:

  • nodeName(节点名称)
  • nodeValue(节点值)
  • nodeType(节点类型)

读取元素节点

案例:查看Class_info.xml文件里Class节点的属性(结点名称,节点的值、节点类型)

from xml.dom import minidom

# 打开XML文件
dom = minidom.parse('Class_info.xml')
# 加载dom对象元素
root = dom.documentElement
# 打印节点信息
print(root.nodeName)
print(root.nodeValue)
print(root.nodeType)

  • nodeName 节点名称
  • nodeValue 返回文本节点的值
  • nodeType 属性返回以数字值返回指定节点的节点类型。
  1. 如果节点是元素节点,则 nodeType 属性将返回 1。
  2. 如果节点是属性节点,则 nodeType 属性将返回 2。

读取文本节点的值

案例:分别打印出Class_info.xml里的学生和老师的详细信息(姓名,年龄、城市)

from xml.dom import minidom

dom = minidom.parse('Class_info.xml')
root = dom.documentElement
names = root.getElementsByTagName('name')
ages = root.getElementsByTagName('age')
citys = root.getElementsByTagName('city') for i in range(4):
print(names[i].firstChild.data)
print(ages[i].firstChild.data)
print(citys[i].firstChild.data)

读取属性节点的值

案例:分别读取打印老师和学生的账号密码。

from xml.dom import minidom

dom = minidom.parse('Class_info.xml')

root = dom.documentElement

logins = root.getElementsByTagName('login')

for i in range(2):
username = logins[i].getAttribute('username')
print(username)
password = logins[i].getAttribute('password')
print(password)

读取子节点信息

读取子节点<student>相关属性

  • nodeName(节点名称)
  • nodeValue(节点值)
  • nodeType(节点类型)
# d导入XML模块
from xml.dom import minidom
# 打开XML文件
dom= minidom.parse('Class_info.xml') root = dom.documentElement tags= root.getElementsByTagName('student')
print(tags[0].nodeName)
print(tags[0].nodeType)
print(tags[0].nodeValue)

3-14 Python处理XML文件的更多相关文章

  1. python读取xml文件报错ValueError: multi-byte encodings are not supported

    1.在使用python对xml文件进行读取时,提示ValueError: multi-byte encodings are not supported 很多贴子上说把xml的编码格式改为,就可以正常执 ...

  2. Python解析xml文件遇到的编码解析的问题

    使用python对xml文件进行解析的时候,假设xml文件的头文件是utf-8格式的编码,那么解析是ok的,但假设是其它格式将会出现例如以下异常: xml.parsers.expat.ExpatErr ...

  3. python读写xml文件

    python读取xml文件 xml文件是具有树状结构的,如果想要访问某个叶子结点,必须逐层获取其父结点,要读取某个叶子结点内容用text成员 使用前先加载xml工具包 try: import xml. ...

  4. python操作xml文件

    一.什么是xml? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. abc.xml <?xml version="1.0&q ...

  5. Python 读写XML文件

    Python 生成XML文件 from xml.dom import minidom # 生成XML文件方式 def generateXml(): impl = minidom.getDOMImple ...

  6. python写xml文件

    为了便于后续的读取处理,这里就将信息保存在xml文件中,想到得到的文件如下: 1 <?xml version="1.0" encoding="utf-8" ...

  7. Python 解析 XML 文件生成 HTML

    XML文件result.xml,内容如下: <ccm> <metric> <complexity>1</complexity> <unit> ...

  8. python处理xml文件

    参考:https://docs.python.org/2/library/xml.etree.elementtree.html 例子: <?xml version="1.0" ...

  9. python 生成 xml文件 属性的顺序问题

    需求很奇葩. 文档示例 <ITEM key="username" eng="User Name" chn="用户名" val=&quo ...

  10. python读取xml文件

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

随机推荐

  1. vue组件data函数

    vue组件data通常定义为一个函数并return一个对象,对象中定义的就是组件数据,当然定义数据还有props.computed等方式. data如果直接定义为对象data: {message: ' ...

  2. 在Winform开发中,使用Async-Awati异步任务处理代替BackgroundWorker

    在Winform开发中有时候我们为了不影响主UI线程的处理,以前我们使用后台线程BackgroundWorker来处理一些任务操作,不过随着异步处理提供的便利性,我们可以使用Async-Awati异步 ...

  3. 【.NET 6】多线程的几种打开方式和代码演示

    前言: 多线程无处不在,平常的开发过程中,应该算是最常用的基础技术之一了.以下通过Thread.ThreadPool.再到Task.Parallel.线程锁.线程取消等方面,一步步进行演示多线程的一些 ...

  4. 基于SqlSugar的开发框架循序渐进介绍(9)-- 结合Winform控件实现字段的权限控制

    字段的权限控制,一般就是控制对应角色人员对某个业务对象的一些敏感字段的可访问性:包括可见.可编辑性等处理.本篇随笔结合基于SqlSugar的开发框架进行的字段控制管理介绍. 在设计字段权限的时候,我们 ...

  5. JavaScript写倒计时

    在网页中,特别是电商网站中,倒计时的出现频率很高,接下来给大家介绍一下怎么用JavaScript写一个倒计时.代码如下: 首先我们通过Date构造函数的方法创建一个倒计时的结束的时间.并将其转换为毫秒 ...

  6. MYSQL的事务和索引

    事务 什么是事务 事务就是将一组SQL语句放在同一批次内去执行 如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行 MySQL事务处理只支持InnoDB和BDB数据表类型 事务的ACID原则 ...

  7. 扩展新的WCV到标准的WC后,不能在业务角色里面看见视图解决方法

    by zyi 感谢群主红枣的分享 1.把你的WCVIEW扩展进WC中 2.使用UI Designer打开你的WCVIEW 3.更改你的WCVIEW名字

  8. RASP | 远程Java应用的RASP调试教程

    远程Java应用的RASP调试教程 介绍 Java RASP是基于Java Agent技术实现的,而Java Agent代码无法独立启动,必须依赖于一个Java运行时程序才能运行. 如何调试一个Jav ...

  9. Unsupervised Person Re-identification by Soft Multilabel Learning

    简介: 这是一篇19年CVPR的跨域无监督Re-ID论文,在Market1501和DukeMTMC-reID上分别达到了67.7%和67.1%的rank-1精度,算是一篇将准确度刷得比较高的论文了,在 ...

  10. 看起来是线程池的BUG,但是我认为是源码设计不合理。

    你好呀,我是歪歪. 前几天看到一个 JDK 线程池的 BUG,我去了解了一下,摸清楚了它的症结所在之后,我觉得这个 BUG 是属于一种线程池方法设计不合理的地方,而且官方在知道这个 BUG 之后表示: ...