如何使用xml.etree.ElementTree打印这些标签中的所有标签和文本?

时间:2015-11-02 20:23:12

标签: python xml xml-parsing

我正在学习如何从xml文件中获取信息,希望你能帮我解决这个简单的问题。

我想收到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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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))