2015-11-02 203 views
0

我正在学习如何从xml文件中获取信息,并希望您可以帮助我解决这个简单的问题。如何使用xml.etree.ElementTree打印这些标签中的所有标签和文本?

我想从xml文件中接收所有信息。 F.e这里是一个XML文件:https://msdn.microsoft.com/en-us/library/ms762271%28v=vs.85%29.aspx

这是我的代码:

import urllib 
import xml.etree.ElementTree as ET 

x = open('books.xml') 
tree = ET.parse(x) 
root = tree.getroot() 
print root.tag 

for c in root: 
    print c.tag,":", c.text 
    for x in c: 
     print x.tag,":", x.text 

是否有打印位于文件中的所有informtaion更优雅的方式?

回答

0

你可以找到根的所有元素:

for e in tree.findall('.//'): 
    <do stuff> 
+0

这正是我所需要的!谢谢! – Nesless

+0

但是这不会给根元素本身。这对于tree.iter()中的e更有效:' – JustCurious

0

你的意思是更优雅的输出或遍历树更优雅的方式?如果你的意思是第二选项,那么也许你应该尝试列表理解?

import xml.etree.ElementTree as ET 
from pprint import pprint 

x = open('books.xml') 
tree = ET.parse(x) 
root = tree.getroot() 

d = [{x.tag: x.text for x in c} for c in root] 
pprint(d) 

你也可以这样做:

def recursive_dict(element): 
    return element.tag, dict(map(recursive_dict, element)) or element.text 

for book in root: 
    pprint(recursive_dict(root))