python读取xml文件
什么是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>
获得标签属性
那么,下面来介绍如何用python来读取这种类型的文件。
#coding=utf-8 import xml.dom.minidom #打开xml文档 dom = xml.dom.minidom.parse('abc.xml') #得到文档元素对象 root = dom.documentElement print root.nodeName print root.nodeValue print root.nodeType print root.ELEMENT_NODE
mxl.dom.minidom 模块被用来处理xml文件,所以要先引入。
xml.dom.minidom.parse() 用于打开一个xml文件,并将这个文件对象dom变量。
documentElement 用于得到dom对象的文档元素,并把获得的对象给root
每一个结点都有它的nodeName,nodeValue,nodeType属性。
nodeName为结点名字。
nodeValue是结点的值,只对文本结点有效。
nodeType是结点的类型。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'
NodeTypes - 有名常数
获得子标签
现在要获得catalog的子标签以的标签name
<?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>
对于知道元素名字的子元素,可以使用getElementsByTagName方法获取:
#coding=utf-8 import xml.dom.minidom #打开xml文档 dom = xml.dom.minidom.parse('abc.xml') #得到文档元素对象 root = dom.documentElement bb = root.getElementsByTagName('maxid') b= bb[0] print b.nodeName bb = root.getElementsByTagName('login') b= bb[0] print b.nodeName
如何区分相同标签名字的标签:
<?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>
<caption>和<item>标签不止一个如何区分?
#coding=utf-8 import xml.dom.minidom #打开xml文档 dom = xml.dom.minidom.parse('abc.xml') #得到文档元素对象 root = dom.documentElement bb = root.getElementsByTagName('caption') b= bb[2] print b.nodeName bb = root.getElementsByTagName('item') b= bb[1] print b.nodeName
root.getElementsByTagName('caption') 获得的是标签为caption 一组标签,b[0]表示一组标签中的第一个;b[2] ,表示这一组标签中的第三个。
获得标签属性值
<?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>
<login>和<item>标签是有属性的,如何获得他们的属性?
#coding=utf-8 import xml.dom.minidom #打开xml文档 dom = xml.dom.minidom.parse('abc.xml') #得到文档元素对象 root = dom.documentElement itemlist = root.getElementsByTagName('login') item = itemlist[0] un=item.getAttribute("username") print un pd=item.getAttribute("passwd") print pd ii = root.getElementsByTagName('item') i1 = ii[0] i=i1.getAttribute("id") print i i2 = ii[1] i=i2.getAttribute("id") print i
getAttribute方法可以获得元素的属性所对应的值。
获得标签对之间的数据
<?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>
<caption>标签对之间是有数据的,如何获得这些数据?
获得标签对之间的数据有多种方法,
方法一
#coding=utf-8 import xml.dom.minidom #打开xml文档 dom = xml.dom.minidom.parse('abc.xml') #得到文档元素对象 root = dom.documentElement cc=dom.getElementsByTagName('caption') c1=cc[0] print c1.firstChild.data c2=cc[1] print c2.firstChild.data c3=cc[2] print c3.firstChild.data
firstChild 属性返回被选节点的第一个子节点,.data表示获取该节点人数据。
方法二
#coding=utf-8 from xml.etree import ElementTree as ET per=ET.parse('abc.xml') p=per.findall('./login/item') for oneper in p: for child in oneper.getchildren(): print child.tag,':',child.text p=per.findall('./item') for oneper in p: for child in oneper.getchildren(): print child.tag,':',child.text
方法二有点复杂,所引用模块也与前面的不一样,findall用于指定在哪一级标签下开始遍历。
getchildren方法按照文档顺序返回所有子标签。并输出标签名(child.tag)和标签的数据(child.text)
其实,方法二的作用不在于此,它核心功能是可以遍历某一级标签下的所有子标签。
相关推荐
总结来说,Python通过`xml.etree.ElementTree`库提供了强大的XML处理能力,无论是创建新的XML文件还是读取和解析已有的XML文档,都非常便捷。通过`generate_xml.py`和`read_xml.py`这样的代码实例,开发者可以深入...
Python 读取 XML 文件 Python 读取 XML 文件是 Python 编程中的一种常见...使用 Python 读取 XML 文件可以使用 xml.dom.minidom 模块,並使用 parse() 函数打开 XML 文件,然后使用文档对象来访问 XML 文件的元素。
Python 读取 XML 文件资料集合 Python 语言是使用 XML 文档的理想语言之一,它具有强大的文本操作能力和灵活的脚本语言特点。Python 中的 XML 工具可以帮助语法分析、处理和生成 XML。关于 XML,要记住一个总体概念...
本教程将详细介绍如何使用Python读取XML文件,并提供一个具体的代码示例。 在Python中,我们可以使用内置的`xml`模块来处理XML文件,特别是`xml.etree.ElementTree`子模块,它提供了方便的API来解析和操作XML文档。...
使用Python读取XML文件,并且如何读取数据集的内容,获得数据集的标签,将其运用到训练过程中,通过该文件学会如何读取XML文件的内容,最终实现自己的数据集读取
在Python中解析XML文件是一种常见的需求,特别是在处理配置文件、数据交换格式以及其他需要结构化数据的应用场景中。本文将详细介绍如何使用两种流行的方法——`MiniDom`和`ElementTree`来解析XML文件。 #### 1. ...
在Python中,我们可以使用内置的`xml`模块来读取、解析和写入XML文件。本篇文章将详细探讨如何使用Python与XML文件进行交互。 首先,我们需要导入`xml.etree.ElementTree`模块,它是Python的标准库之一,提供了XML...
本教程将详细讲解如何使用Python解析XML文件,并进行添加、删除和查找操作。 首先,Python提供了几个库来处理XML,其中最常用的是`xml.etree.ElementTree`。这个模块提供了树形结构来表示XML文档,使得处理XML变得...
对于XML文件,Python内置了`xml.etree.ElementTree`模块,它提供了解析和生成XML文档的功能。对于Excel文件,我们可以使用pandas库,它支持读写Excel文件,并且在处理表格数据时非常强大。 1. **读取XML文件**: ...
总结来说,Python的`xml.etree.ElementTree`模块提供了一套强大的工具,使得XML文件的读写、修改和查询变得简单易行。无论你是新手还是经验丰富的开发者,掌握这些技能都将极大地提升你在处理结构化数据时的效率。
以上代码实现了从XML文件解析数据,并使用Python生成一个包含彩色效果的Excel文档。在实际应用中,你可以根据需求调整数据处理和样式设置部分,以满足特定的业务需求。例如,可以根据XML元素的属性或文本内容来决定...
本主题聚焦于如何在Linux、T100(可能是某种特定设备或环境)以及Windows操作系统上,利用Python读取XML文件并发送邮件。下面我们将详细探讨这个过程涉及的知识点。 首先,我们需要了解XML(Extensible Markup ...
详解 Python 读写XML文件的实例 Python 生成XML文件 from xml.dom import minidom # 生成XML文件方式 def generateXml(): impl = minidom.getDOMImplementation() # 创建一个xml dom # 三个参数分别对应为 :...
总结来说,Python的ElementTree库为处理XML文档提供了一套简单而强大的工具,无论是读取、创建、修改还是序列化XML文档,都能高效地完成。通过熟练掌握这些方法,你可以轻松地在Python项目中管理和操作XML数据。在...
本篇将详细阐述如何读取PLC寄存器以及操作XML文件。 首先,PLC是工业控制系统的核心组成部分,它负责接收来自传感器的输入信号,并根据预设的程序逻辑控制执行器的动作。读取PLC寄存器是获取设备状态或监控生产过程...
本篇将详细讲解如何使用Python中的pandas库来处理XML文件,以实现类似于读取数据库的方式进行数据操作。 首先,让我们了解pandas库。Pandas是Python中一个强大的数据分析工具,它提供了大量可以高效操作大型数据集...