学python没多久,遇到一个解析xml的需求,边学边练,用的是ElementTree,感觉没有说的那么方便,也许E文不好,看漏api,root.findall()搞的象正则表达式,瞎了。希望知道的朋友告诉我
题目这样,比如有个xml:
Hongten
M
20
97
90
DuDu
W
21
87
96
Sum
M
19
64
98
已知某个值是19,求拥有该值的节点的父节点的所有子节点,就是这么一块:
Sum
M
19
64
98
我的代码:
#coding=utf-8
import os
import xml.etree.ElementTree as ET
filepath = 'c:\\test\\a.xml'
tree = ET.parse(filepath)
root = tree.getroot()
p_node = None
r_node = []
def func(node):
global p_node
if len(node)>0:
p_node = node
for c in node:
func(c)
else:
if node.text == '19':#值在这里在这里
r_node.append(p_node)
if __name__ == '__main__':
func(root)
if not r_node:
for n in r_node:
print '-'*10
for c in n:
print c.tag,c.text
else:
print 'not found'
输出:
----------
name Sum
gender M
age 19
score 64
score 98
[Finished in 0.1s]
先这样吧,交差!