`

使用ElementTree操作XML文件

 
阅读更多

关于下载和安装ElementTree,请参考官网:http://effbot.org/zone/element-index.htm

 

下面以这个XML文件为例:

 

<?xml version="1.0" encoding="UTF-8"?>

<collection shelf="New Arrivals">
	<movie title="Enemy Behind">
	   <type>War, Thriller</type>
	   <format>DVD</format>
	   <year>2003</year>
	   <rating>PG</rating>
	   <stars>10</stars>
	   <description>Talk about a US-Japan war</description>
	</movie>
	<movie title="Transformers">
	   <type>Anime, Science Fiction</type>
	   <format>DVD</format>
	   <year>1989</year>
	   <rating>R</rating>
	   <stars>8</stars>
	   <description>A schientific fiction</description>
	</movie>
	<movie title="Trigun">
	   <type>Anime, Action</type>
	   <format>DVD</format>
	   <episodes>4</episodes>
	   <rating>PG</rating>
	   <stars>10</stars>
	   <description>Vash the Stampede!</description>
	</movie>
	<movie title="Ishtar">
	   <type>Comedy</type>
	   <format>VHS</format>
	   <rating>PG</rating>
	   <stars>2</stars>
	   <description>Viewable boredom</description>
	</movie>
</collection>

读取XML文件:

from elementtree import ElementTree

root = ElementTree.parse('movies.xml').getroot()
movies = root.findall('.//movie')

for movie in movies:
  print '--------------------'
  print '@Title: ' + movie.attrib.get('title')
  #access to element directly by using XPATH
  e_type = movie.find('.//type')
  if(e_type != None):
    print e_type.tag + ' : ' + e_type.text

  for subElement in movie.getchildren():
    print '\t' + subElement.tag + ' : ' + subElement.text  

修改并保存XML文件:

from elementtree import ElementTree
from elementtree.ElementTree import Element

root = ElementTree.parse('movies.xml').getroot()

#Create a child element
e_movie = Element('movie')
root.append(e_movie)

#This is how you set an attribute on an element
e_movie.attrib['title'] = "Test element"

e_type = Element('type')
e_type.text = 'Test element - type'
e_movie.append(e_type)

e_format = Element('format')
e_format.text = 'Test element - format'
e_movie.append(e_format)

e_year = Element('year')
e_year.text = 'Test element - year'
e_movie.append(e_year)

e_rating = Element('rating')
e_rating.text = 'Test element - rating'
e_movie.append(e_rating)

e_stars = Element('stars')
e_stars.text = 'Test element - stars'
e_movie.append(e_stars)

e_description = Element('description')
e_description.text = 'Test element - description'
e_movie.append(e_description)


#Now lets write it to an .xml file on the hard drive

#Open a file
file = open("movies2.xml", 'w')

#Create an ElementTree object from the root element
ElementTree.ElementTree(root).write(file)

#Close the file like a good programmer
file.close()

如果要使用namespace的话,可以这样:

 

namespace = "http://xxx"

e = root.find('.//{%s}YourElementName' % namespace)
 

 

你可能会注意到,保存后的XML文件并没有缩进对齐。很遗憾的是ELementTree中没有提供相应的方法来实现这个功能。如果你确实需要对齐缩进的话,可以使用lxml。关于 lxml的使用,请参考另一篇我的博文。

 

 

 

 

 

 

 

0
2
分享到:
评论

相关推荐

    python使用ElementTree类 处理XML

    解析 XML 文档后,我们可以使用 ElementTree 模块提供的方法来访问和操作 XML 元素。例如,我们可以使用 `ElementTree.dump()` 方法来将 XML 元素转换成字符串:`ElementTree.dump(root)`。这将输出 XML 文档的内容...

    9.7. xml.etree.ElementTree — ElementTree XML的接口(翻译).pdf

    例如,可以使用ET.parse()函数从文件中读取XML,或者使用ET.fromstring()函数从字符串中直接解析XML。一旦数据被解析,就可以通过ElementTree或Element提供的方法来操作数据。 遍历XML树可以通过迭代Element对象来...

    解析XML文件,使用ElementTree模块,并根据流程图设计合适的数据结构保存解析结果-使用Python ElementTree模块解析XML文件并设计数据结构-含源代码及解释

    内容概要:本文详细介绍了如何使用Python的ElementTree模块解析XML文件,并设计合适的数据结构来保存解析结果。具体步骤包括导入ElementTree模块、解析XML文件、设计数据结构、遍历XML元素、提取信息并保存到数据...

    Python3 xml.etree.ElementTree支持的XPath语法详解

    在Python中,我们可以使用ElementTree的`find`、`findall`和`iterfind`方法结合XPath表达式来查找和操作XML数据。 1. **标签选择**: - `tag`:选择具有特定标签名的元素,例如`//country`会选择所有名为`country`...

    Python使用ElementTree美化XML格式的操作

    Python中使用ElementTree可以很方便的处理XML,但是产生的XML文件内容会合并在一行,难以看清楚。 如下格式: &lt;root&gt;&lt;aa&gt;aatext&lt;cc&gt;cctext&lt;/cc&gt;&lt;/aa&gt;&lt;bb&gt;bbtext&lt;dd&gt;ddtext&lt;ee&gt;eetext&lt;/ee&gt;&lt;/dd&gt;&lt;/bb&gt;&lt;/root&gt; 使用...

    elementtree-1.2.6-20050316.tar

    1. **解析 XML**:你可以使用 `ElementTree.parse()` 函数加载 XML 文件到内存,返回一个 ElementTree 实例。 2. **访问元素**:`ElementTree.getroot()` 方法返回根元素,你可以通过 `.find()`, `.findall()` 或 `....

    python_elementt_xml.zip_python xml_xml解析 python

    1. **解析XML文档**:使用`ElementTree.parse()`或`ET.fromstring()`函数解析XML文件。前者用于读取整个XML文件,后者适用于处理字符串形式的XML数据。 ```python tree = ET.parse('example.xml') # 解析XML文件 ...

    python xml.etree.ElementTree遍历xml所有节点实例详解

    python xml.etree.ElementTree遍历xml所有节点 XML文件内容: 代码: #-*- coding: UTF-8 -*- # 从文件中读取数据 import xml.etree.ElementTree as ET #全局唯一标识 unique_id = 1 #遍历所有的节点

    Node.JS XML 解析 node-elementtree.zip

    总结起来,`node-elementtree` 是 Node.JS 开发者处理 XML 数据的一个强大工具,它提供了一种简洁的 API,使你在 JavaScript 中操作 XML 文档如同操作 JSON 对象一样方便。无论是解析、查询还是创建 XML,`node-...

    利用 Python ElementTree 生成 xml的实例

    在这个实例中,我们将详细探讨如何使用`ElementTree`来生成XML文件。 首先,我们需要导入`ElementTree`模块,通常我们会将其别名为`etree`,以便后续代码更加简洁: ```python from xml.etree import ElementTree ...

    【批量修改plist内容偏移量】python通过使用 ElementTree 模块来处理 XML Python_Plist.zip

    `ElementTree`不仅能够读取XML文件,还能创建新的XML结构,并对XML元素进行操作。这对于处理Plist文件非常有用,因为Plist本质上就是XML文档。 批量修改Plist文件的内容,首先需要导入必要的库,包括`xml.etree....

    Python中使用ElementTree解析XML示例

    - **优点**:流式读取XML文件,速度快且内存占用低。 - **缺点**:需要用户实现复杂的回调函数。 **2. DOM (Document Object Model)** - **描述**:将XML文档解析为内存中的树形结构,通过操作树来读取或修改文档...

    Python利用ElementTree模块处理XML的方法详解

    解析XML是指读取XML文件并将其转换为Python内部的数据结构,便于后续操作。 ##### 从XML文件中解析 ```python import xml.etree.ElementTree as ET # 加载XML文件 tree = ET.parse('example.xml') root = tree.get...

    使用Python类似pandas的方式读取xml文件的例子_pandas读取数据库

    要使用pandas读取XML文件,我们需要借助额外的库如`lxml`或`xml.etree.ElementTree`,因为pandas本身并不直接支持XML解析。这里我们以`xml.etree.ElementTree`为例,它是Python标准库的一部分,不需要额外安装。 ...

    vc DOM操作xml,从Tree到Xml,xml到Tree

    在本主题“vc DOM操作xml,从Tree到Xml,xml到Tree”中,我们将深入探讨如何利用VC++(Microsoft的C++编译器)来实现DOM操作XML,并将XML数据与树形控件进行交互。 首先,我们需要了解XML的基本概念。XML...

    python读取xml文件代码

    在Python中,我们可以使用内置的`xml`模块来处理XML文件,特别是`xml.etree.ElementTree`子模块,它提供了方便的API来解析和操作XML文档。首先,我们需要导入`ElementTree`模块: ```python import xml.etree....

    读取PLC寄存器,读写XML文件

    2. **读取XML**:通过解析库,我们可以访问XML文件中的节点和属性,提取所需信息。例如,查询特定元素的值或获取整个文档的结构。 3. **写入XML**:创建新的XML文件或修改已有文件涉及添加、删除或更新元素、属性。...

    python处理XML文档

    本篇文章将深入探讨如何使用Python的ElementTree库来解析、创建和操作XML文档。 XML(eXtensible Markup Language)是一种标记语言,常用于存储结构化数据。它通过标签定义元素和属性,使数据具有自解释性,易于...

Global site tag (gtag.js) - Google Analytics