`
shopscor
  • 浏览: 20057 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

python语言解析xml文件的常用的有两种方式

阅读更多
文章来自: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文件的,操作要方便的多。
分享到:
评论

相关推荐

    python解析xml文件

    本文将详细介绍如何使用两种流行的方法——`MiniDom`和`ElementTree`来解析XML文件。 #### 1. 通过 MiniDom 库解析 XML 文件 `MiniDom`是Python标准库中的一部分,它提供了DOM(Document Object Model)接口,允许...

    python文件对比 xml、excel

    使用`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文件

    本主题主要关注两个方面:使用Python解析CDD文件和批量删除CANoe工程中的CBF文件。CDD(Configuration Data Description)文件是用于描述CANoe工程配置的数据文件,而CBF(CAN Bus Format)文件则是CANoe中存储CAN...

    Python读写XML文件实例

    Python作为一种功能强大的编程语言,提供了丰富的库来处理XML文件,包括读取和写入。本篇文章将深入探讨Python中处理XML文件的相关知识点,结合给定的代码实例`generate_xml.py`和`read_xml.py`,以及参考文件`test....

    python解析xml文件方式(解析、更新、写入)

    写入 XML 文件可以分为两种情况:创建新的 XML 文件和在现有 XML 文件中添加新的元素。 ##### 创建新的 XML 文件 创建新的 XML 文件涉及创建一个空的 DOM 文档对象,并逐步构建 XML 结构。 ##### 示例代码: ```...

    Python解析创建xml文件的代码

    Python作为一门功能强大的编程语言,提供了丰富的库来处理XML相关的任务,如创建、解析和操作XML文件。本篇文章将深入探讨如何使用Python进行XML文件的创建和解析。 首先,我们来看`Create_xml.py`文件中的内容。这...

    python解析xml

    Python是一种功能强大的编程语言,广泛应用于数据处理、网络编程、科学计算等领域。在XML解析方面,Python提供了多种库,使得处理XML文档变得简单而高效。XML(eXtensible Markup Language)是一种标记语言,用于...

    基于Python实现的自动化生成XML解析类

    通过`ET.fromstring()`函数可以解析XML字符串,得到一个Element对象树,然后可以使用方法如`.find()`, `.findall()`, `.text`等来查询和操作元素。 现在,让我们深入探讨这个自动化XML解析类的实现。该类可能是通过...

    Python如何对XML 解析

    在Python中,处理XML有多种方式,主要包括SAX(Simple API for XML)和DOM(Document Object Model)两种主流的解析接口,以及Python标准库中的ElementTree模块。 1. **SAX解析**: SAX是一种基于事件驱动的解析...

    python解析xml生成excel文档

    在Python编程中,XML(eXtensible Markup Language)是一种常用的数据交换格式,它具有结构化的特点,使得数据易于处理和解析。而Excel是Microsoft Office套件中的一个应用程序,用于创建和编辑电子表格。当我们需要...

    xml文件解析示范

    XML解析通常有两种主要方式:DOM(Document Object Model)和SAX(Simple API for XML)。 1. DOM解析:DOM将整个XML文档加载到内存中,形成一个树形结构,允许开发者通过节点遍历和操作XML数据。这种方式适用于小...

    文件上传,下载,解析xml文件

    解析XML文件的方法有两种:DOM(Document Object Model)和SAX(Simple API for XML)。DOM一次性加载整个XML文档到内存,形成一个树形结构,方便遍历和查找元素。而SAX是事件驱动的,逐行读取XML文件,只在遇到特定...

    解析XML特殊字符方法

    有两种主要方法来解析XML中的特殊字符: **方法一:使用实体引用** 实体引用是XML中最常见的处理特殊字符的方式。当你需要在XML文档中插入特殊字符时,可以使用对应的实体引用。比如,如果你想在文本中包含一个...

    python批量修改xml.rar

    Python是一种强大的编程语言,尤其在处理数据和自动化任务方面,如批量修改XML文件。XML(eXtensible Markup Language)是一种用于标记数据的通用格式,广泛应用于存储和传输结构化数据。在这个“python批量修改xml....

    python_XML-6-17.rar_python 文件_python xml_python读写xml_python读写xm

    Python是一种强大的编程语言,尤其在处理数据和文件操作方面表现出色。XML(eXtensible Markup Language)是一种标记语言,常用于存储结构化数据。在Python中,我们可以使用内置的`xml`模块来读取、解析和写入XML...

    详细解读Python中解析XML数据的方法

    在Python中处理XML数据主要有两种方式:使用标准库中的模块或者第三方库。对于大多数基本的应用场景而言,标准库中的`xml.etree.ElementTree`模块就足够用了。该模块提供了简单且高效的方式来解析和创建XML数据。 #...

    python读取各种文件数据方法解析

    Excel文件是另一种常用的存储表格数据的方式。Python中的`xlrd`库可以用来读取Excel文件。 **示例代码**: ```python import xlrd import json def read_ex_stop_PTline(): workbook = xlrd.open_workbook(r'...

    一些解析XML的资料

    XML解析主要分为两种方式:DOM(Document Object Model)和SAX(Simple API for XML)。DOM将整个XML文档加载到内存中,形成一个树形结构,允许开发者遍历和修改整个文档。这种方式适用于小型文件,但对于大型XML...

    Python创建xml文件示例

    总的来说,Python的`xml.etree.ElementTree`模块提供了一种简单且灵活的方式来创建、解析和修改XML文件。通过实例化元素、添加属性、子元素和注释,我们可以构建出复杂的XML文档结构。然后,使用`write`方法将元素树...

Global site tag (gtag.js) - Google Analytics