一 基本知识
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 >
< 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())
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())
参考:
http://blog.csdn.net/kiki113/archive/2009/04/06/4052584.aspx
完!