转自:http://blog.sina.com.cn/s/blog_71c19c620100qyrc.html
一基本知识
1、插入节点
Element.insert(index, element) 、Element(tag[, attrib][, **extra]) 、SubElement(parent, tag[, attrib[, **extra]]) 、Element.append(subelement)
2、删除节点
Element.remove(subelement) 删除一个节点、Element.clear()删除该节点下所有子节点
3、在节点中插入属性
Element.set(key, value)
4、查找节点
a) Element.getiterator b) Element.getchildren c) Element.find d) Element.findall
二 读取xml
1)xml为
<
?xml version
=
"
1.0
"
encoding
=
"
UTF-8
"
?
>
<
employees
>
<
employee id
=
'
1
'
>
<
name
>
linux
</
name
>
<
age
>
30
</
age
>
</
employee
>
<
employee id
=
'
2
'
>
<
name
>
windows
</
name
>
<
age
>
20
</
age
>
</
employee
>
</
employees
>
2)python脚本为
from
xml.etree
import
ElementTree
def
print_node(node):
print
"
=====================================
"
for
key,value
in
node.items():
print
"
%s:%s
"
%
(key, value)
for
subnode
in
node.getchildren():
print
"
%s:%s
"
%
(subnode.tag, subnode.text)
def
read_xml(text
=
''
, xmlfile
=
''
):
#
root = ElementTree.parse(xmlfile)
root
=
ElementTree.fromstring(text)
#
1 getiterator([tag=None])
#
only elements whose tag equals tag are returned from the iterator
eitor
=
root.getiterator(
"
employee
"
)
for
e
in
eitor:
print_node(e)
#
2 getchildren()
#
Returns all subelements
eitor
=
root.getchildren()
for
e
in
eitor:
print_node(e)
#
3 findall(match)
#
Finds all subelements matching match.
#
match may be a tag name or path. Returns an iterable yielding all matching elements
node_findall
=
root.findall(
"
employee
"
)
for
e
in
node_findall:
print_node(e)
#
4 find(match)
#
Finds the first subelement matching match.
#
match may be a tag name or path. Returns an element instance or None
node_find
=
root.find(
'
employee
'
)
print_node(node_find)
if
__name__
==
'
__main__
'
:
read_xml(open(
"
employees.xml
"
).read())