文章来自:http://jordy.easymorse.com/?p=442。
python语言解析xml文件的常用的有两种方式:
* 通过MiniDom库解析xml文件
* 通过ElementTree库解析xml文件
MiniDom方式解析xml
xml文件以data.xml为例,具体操作如下:
data.xml:
<?xml version="1.0" encoding="utf-8"?>
<info>
<intro>保存用户的信息</intro>
<list id='001'>
<head>auto_userone</head>
<name>Jordy</name>
<number>12345678</number>
<age>20</age>
<sex>男</sex>
<hobby>上网</hobby>
</list>
<list id='002'>
<head>auto_usertwo</head>
<name>功夫</name>
<number>34443678</number>
<age>18</age>
<sex>男</sex>
<hobby>功夫</hobby>
</list>
</info>
1. 得到DOM对象
DOM是Document Object Model的简称,它是以对象树来表示一个XML。
import xml.dom.minidom
#得到dom对象
dom = xml.dom.minidom.parse("data.xml")
2. 得到文档元素对象
#得到文档元素对象
root = dom.documentElement #这里得到的是根节点info
#打印根节点的 名字 节点的值 节点类型
print root.nodeName,root.nodeValue,root.nodeType
节点的属性:
每一个节点都有它的nodeName,nodeValue,nodeType属性。nodeName为节点名字。
nodeValue是节点的值,只对文本节点有效。nodeType是节点的类型,现在有以下几种:
‘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’
3.子元素、子节点的访问
对于已经知道元素名字的子元素,可以通过使用getElementsByTagName()方法访问,例:
root.getElementsByTagName("intro") #读取intro子元素
返回的结果是一个列表。
如果要得到某元素下的所有子节点,可以使用childNodes属性:
root.childNodes
getElementsByTagName()可以搜索当前元素的所有子元素,包括所有层次的子元素。childNodes只保存了当前元素的第一层子结点。
比如:我们想要得到intro元素下的值“保存用户的信息”,实现如下代码:
node = root.getElementsByTagName("intro")[0]
for node in node.childNodes:
if node.nodeType in ( node.TEXT_NODE, node.CDATA_SECTION_NODE):
print node.data
这种方式在获取元素的文本时,需要先判断才行,所以使用起来感觉不是太方便。
ElementTree库解析xml文件
ElementTree属于python标准库的一部分,ElementTree的parse()方法是这个库的主要入口,它使用文件名或流对象作为参数,parse()方法会立即解析完整个文档,它返回的对象是整个文档的对象,而不是根元素,如果要获取根元素,可以调用getroot()方法。
使用上述的data.xml文档,通过ElementTree库解析的代码:
import xml.etree.ElementTree as ET
#读取xml文件
def load_xml_file(fileName):
root = ET.parse(fileName).getroot()
#获取文件描述
intro = root.find('intro').text
print intro
#获取所有list节点
all_users = root.findall('list')
#遍历list节点的子元素
for user in all_users:
#得到head节点的文本
head = user.find('head').text
#得到name节点的文本
name = user.find('name').text
#得到sex节点的文本
sex = user.find('sex').text
print head,name,sex
if __name__ == '__main__':
load_xml_file('data.xml')
通过这种方式解析xml文件比起使用minidom库解析xml文件的,操作要方便的多。
分享到:
相关推荐
本文将详细介绍如何使用两种流行的方法——`MiniDom`和`ElementTree`来解析XML文件。 #### 1. 通过 MiniDom 库解析 XML 文件 `MiniDom`是Python标准库中的一部分,它提供了DOM(Document Object Model)接口,允许...
使用`xml.etree.ElementTree`库,可以轻松地解析XML文件。例如: ```python import xml.etree.ElementTree as ET tree = ET.parse('example.xml') root = tree.getroot() for child in root: print(child....
本主题主要关注两个方面:使用Python解析CDD文件和批量删除CANoe工程中的CBF文件。CDD(Configuration Data Description)文件是用于描述CANoe工程配置的数据文件,而CBF(CAN Bus Format)文件则是CANoe中存储CAN...
Python作为一种功能强大的编程语言,提供了丰富的库来处理XML文件,包括读取和写入。本篇文章将深入探讨Python中处理XML文件的相关知识点,结合给定的代码实例`generate_xml.py`和`read_xml.py`,以及参考文件`test....
写入 XML 文件可以分为两种情况:创建新的 XML 文件和在现有 XML 文件中添加新的元素。 ##### 创建新的 XML 文件 创建新的 XML 文件涉及创建一个空的 DOM 文档对象,并逐步构建 XML 结构。 ##### 示例代码: ```...
Python作为一门功能强大的编程语言,提供了丰富的库来处理XML相关的任务,如创建、解析和操作XML文件。本篇文章将深入探讨如何使用Python进行XML文件的创建和解析。 首先,我们来看`Create_xml.py`文件中的内容。这...
Python是一种功能强大的编程语言,广泛应用于数据处理、网络编程、科学计算等领域。在XML解析方面,Python提供了多种库,使得处理XML文档变得简单而高效。XML(eXtensible Markup Language)是一种标记语言,用于...
通过`ET.fromstring()`函数可以解析XML字符串,得到一个Element对象树,然后可以使用方法如`.find()`, `.findall()`, `.text`等来查询和操作元素。 现在,让我们深入探讨这个自动化XML解析类的实现。该类可能是通过...
在Python中,处理XML有多种方式,主要包括SAX(Simple API for XML)和DOM(Document Object Model)两种主流的解析接口,以及Python标准库中的ElementTree模块。 1. **SAX解析**: SAX是一种基于事件驱动的解析...
在Python编程中,XML(eXtensible Markup Language)是一种常用的数据交换格式,它具有结构化的特点,使得数据易于处理和解析。而Excel是Microsoft Office套件中的一个应用程序,用于创建和编辑电子表格。当我们需要...
XML解析通常有两种主要方式:DOM(Document Object Model)和SAX(Simple API for XML)。 1. DOM解析:DOM将整个XML文档加载到内存中,形成一个树形结构,允许开发者通过节点遍历和操作XML数据。这种方式适用于小...
解析XML文件的方法有两种:DOM(Document Object Model)和SAX(Simple API for XML)。DOM一次性加载整个XML文档到内存,形成一个树形结构,方便遍历和查找元素。而SAX是事件驱动的,逐行读取XML文件,只在遇到特定...
有两种主要方法来解析XML中的特殊字符: **方法一:使用实体引用** 实体引用是XML中最常见的处理特殊字符的方式。当你需要在XML文档中插入特殊字符时,可以使用对应的实体引用。比如,如果你想在文本中包含一个...
Python是一种强大的编程语言,尤其在处理数据和自动化任务方面,如批量修改XML文件。XML(eXtensible Markup Language)是一种用于标记数据的通用格式,广泛应用于存储和传输结构化数据。在这个“python批量修改xml....
Python是一种强大的编程语言,尤其在处理数据和文件操作方面表现出色。XML(eXtensible Markup Language)是一种标记语言,常用于存储结构化数据。在Python中,我们可以使用内置的`xml`模块来读取、解析和写入XML...
在Python中处理XML数据主要有两种方式:使用标准库中的模块或者第三方库。对于大多数基本的应用场景而言,标准库中的`xml.etree.ElementTree`模块就足够用了。该模块提供了简单且高效的方式来解析和创建XML数据。 #...
Excel文件是另一种常用的存储表格数据的方式。Python中的`xlrd`库可以用来读取Excel文件。 **示例代码**: ```python import xlrd import json def read_ex_stop_PTline(): workbook = xlrd.open_workbook(r'...
XML解析主要分为两种方式:DOM(Document Object Model)和SAX(Simple API for XML)。DOM将整个XML文档加载到内存中,形成一个树形结构,允许开发者遍历和修改整个文档。这种方式适用于小型文件,但对于大型XML...
总的来说,Python的`xml.etree.ElementTree`模块提供了一种简单且灵活的方式来创建、解析和修改XML文件。通过实例化元素、添加属性、子元素和注释,我们可以构建出复杂的XML文档结构。然后,使用`write`方法将元素树...