用ElementTree 解析和生成 XML

原创 2007年09月28日 11:13:00
from elementtree import ElementTree
from elementtree.ElementTree import Element

##解析方案一: 解析XML字符串,入参是字符串
fp = open('test.xml', 'r')
content = fp.read()
fp.close()

content = content.decode('gb2312').encode('UTF-8')
content = content.replace('encoding="gb2312"', 'encoding="UTF-8"')
print content

root = ElementTree.fromstring(content)

##解析方案二: 解析一个XML文件,入参是文件名
import elementtree.ElementTree as ET
root = ET.Element("html")

##获取节点
##获取同名节点列表
root.findall('NodeName') ##这是第一层节点
root.findall('/NodeName/SubNode') ##也可以写路径来获取底下几层的节点
##也可以这么获取多层的节点
ElementTree.Element = root.findall('NodeName')
ElementTree.Element[0].findall('SubNode')
##获取后的节点可以用个iter来保存,也可以直接就用 ElementTree.Element来获取


##获取单个节点,如果有同名的返回第一个节点
root.find('NodeName') ##这是第一层节点
root.find('/NodeName/SubNode') ##也可以写路径来获取底下几层的节点
##也可以这么获取多层的节点
ElementTree.Element = root.find('NodeName')
ElementTree.Element.find('SubNode')


##获得和修改属性
##根节点
print root.get("Name")
root.set("Name", "aaaa")##修改根节点中名为Name的属性值为"aaaa"
print root.get("Name")

##子节点
ElementTree.Element = root.findall('node')
print ElementTree.Element[2].get("name")
ElementTree.Element[2].set("name","kkk")
print ElementTree.Element[2].get("name")


##写XML
##将root存储为XML字符串,这是写XML的方法之一,前提是得先由一个XML解析出root
print ElementTree.tostring(root, encoding='gb2312')

##写XML方法之二,构造XML,从空白开始
from elementtree.SimpleXMLWriter import XMLWriter
import sys
##XMLWriter(file,encoding='')参数是:文件名,文件编码类型
w = XMLWriter("TEST.XML",, encoding='gb2312')
w.declaration(encoding='gb2312') ##添加XML头,即<?xml version="1.0" encoding="gb2312"?>
xmlstr = w.start("html") ##这边的变量不能定义为 xml
w.start("head") ##根节点 <head>
w.element("title", "my document")
w.element("meta", name="generator", value="my application 1.0") ##这是个有属性的节点,生成之后为<meta name=name="generator" value="my application 1.0">
w.end() ##一段节点的结束,下一个w.start()追加的是和本次w.start()同级的节点
w.start("body")
w.element("h1", "this is a heading")
w.element("p", "this is a paragraph")
w.start("p")
w.data("this is ")
w.element("b", "bold")
w.data(" and ")
w.element("i", "italic")
w.data(".")
w.end("p")
w.close(xmlstr)

##以上是将生成的XML写到文件中,如果是想写到一个字符串中则需要使用以下代码
from cStringIO import StringIO
out = StringIO()
w = XMLWriter(out, encoding='gb2312')
##……中间相同
w.close(xmlstr)
ss = out.getvalue() ##用这句来获得整个XML字符串

使用 ElementTree,以 Python 语言处理 XML

最近一直在用python处理xml文件,查阅了不少资料,看到一篇挺有用的文章,所以转过来与大家分享。   ElementTree,一个用于 Python 的本机 XML 库。在 Pytho...
  • skywalker_hdu
  • skywalker_hdu
  • 2012年09月27日 22:37
  • 1120

Python标准库之xml.etree.ElementTree

http://www.cnblogs.com/ifantastic/archive/2013/04/12/3017110.html 简介 Element类型是一种灵活的容器对象,用于在...
  • gingerredjade
  • gingerredjade
  • 2014年03月24日 11:53
  • 20117

python 6-4 如何构建xml文档使用标准库中的xml.etree.ElementTree 构建ElementTree,使用write方法写入文档

python 6-4 如何构建xml文档使用标准库中的xml.etree.ElementTree 构建ElementTree,使用write方法写入文档 root=minidom.Document(...
  • u013679490
  • u013679490
  • 2017年01月27日 10:47
  • 1059

使用 Python ElementTree 生成 xml

Python 处理 xml 文档的方法有很多,除了经典的 sax 和 dom 之外,还有一个 ElementTree。 首先 import 之: 1 from...
  • u010229420
  • u010229420
  • 2017年05月11日 14:49
  • 3187

Python使用ElementTree处理XML的美化

Python中使用ElementTree可以很方便的处理XML,但是产生的XML文件内容会合并在一行,难以看清楚。 如下格式: aatextcctextbbtextddtexteetext ...
  • shinobiii
  • shinobiii
  • 2012年12月04日 00:11
  • 3457

Python xml属性/节点/文本的增删改[xml.etree.ElementTree]

需求: 在实际应用中,需要对xml配置文件进行实时修改,   1.增加、删除 某些节点  2.增加,删除,修改某个节点下的某些属性  3.增加,删除,修改某些节点的文本 xml源文件格式[例] ...
  • wklken
  • wklken
  • 2012年05月25日 19:35
  • 43573

利用ElementTree对xml进行修改

# coding:utf-8 # Copyright@hitzym, Dec,09,2017 at HIT # blog:http://blog.csdn.net/yinhuan1649/articl...
  • yinhuan1649
  • yinhuan1649
  • 2017年12月16日 09:28
  • 32

Python ElementTree 保存中文路径

准备使用Python ElementTree 来生成一个目录XML, 但是遇到有中文名的文件夹和文件,在保存时候遇到了UnicodeDecodeError: 'ascii' codec can't d...
  • ssfang007
  • ssfang007
  • 2014年01月24日 11:37
  • 1228

使用xml.etree.ElementTree遍历xml所有节点

转自 http://blog.csdn.net/yiluochenwu/article/details/23515923 XML文件内容: [html] view pla...
  • gzhouc
  • gzhouc
  • 2015年07月19日 18:44
  • 4348

python 模块- 对XML的解析 ElementTree(元素树)

参考地址:http://blog.csdn.net/yueguanghaidao/article/details/7265246 python的官方文档:https://docs.python.org...
  • hhh3h
  • hhh3h
  • 2014年08月06日 16:57
  • 2371
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用ElementTree 解析和生成 XML
举报原因:
原因补充:

(最多只允许输入30个字)