如何在python中解析具有多个嵌套子级的.xml文件?
我正在使用python解析一个.xml文件,这个文件非常复杂,因为它有很多嵌套子文件;访问其中包含的一些值非常烦人,因为代码开始变得非常糟糕 首先让我向您展示.xml文件: 我得到的结果如下:如何在python中解析具有多个嵌套子级的.xml文件?,python,xml,parsing,xml-parsing,nested,Python,Xml,Parsing,Xml Parsing,Nested,我正在使用python解析一个.xml文件,这个文件非常复杂,因为它有很多嵌套子文件;访问其中包含的一些值非常烦人,因为代码开始变得非常糟糕 首先让我向您展示.xml文件: 我得到的结果如下: 11111 22222 33333 44444 我想要的输出应该是这样的: 11111 22222 GIOVANNI 33333 ANDREA 44444 正如您所看到的,我能够轻松地阅读GOAL1和GOAL2,但我正在寻找一种更好的代码实践来访问这些值,因为在我看来,它太长,很难阅读/理解 我
11111
22222
33333
44444
我想要的输出应该是这样的:
11111
22222
GIOVANNI
33333
ANDREA
44444
正如您所看到的,我能够轻松地阅读GOAL1
和GOAL2
,但我正在寻找一种更好的代码实践来访问这些值,因为在我看来,它太长,很难阅读/理解
我想做的第二件事是以一种自动化的方式获取GOAL3
和GOAL4
,这样我就不必重复类似的代码行,并且使其更易读易懂
注意:如您所见,我无法阅读GOAL3
。如果可能,我希望同时获得GOAL3\u名称
和GOAL3\u ID
为了使.xml文件结构更易于理解,我发布了一张它的图像:
突出显示的元素就是我要寻找的。这里有一个简单的例子,可以使用递归方法和cElementTree从头到尾进行迭代(速度快15-20倍),您可以从中收集所需的信息
import xml.etree.cElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
def get_tail(root):
for child in root:
print child.text
get_tail(child)
get_tail(root)
我想从带有标记“GOAL”+str(N)的元素中获取文本,其中N是数字,对吗?从GOAL1、GOAL2、GOAL4中,我需要获取它们存储的数字:1111122223333344444。至于GOAL3,我希望得到GIOVANNI和ANDREA。我建议您在运行它时使用“for d in data.iter()”,我得到:“dict_values”对象不支持索引您使用python 3.x吗?您可以尝试将“d.attrib.values()[0]”替换为“print d.attrib[“GOAL3_NAME”]'如果只想在树上迭代而不受任何约束,则效果最佳。
11111
22222
GIOVANNI
33333
ANDREA
44444
import xml.etree.cElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
def get_tail(root):
for child in root:
print child.text
get_tail(child)
get_tail(root)
import xml.etree.cElementTree as ET
data = ET.parse('test.xml')
for d in data.iter():
if d.tag in ["GOAL1", "GOAL2", "stepCC", "stepCC"]:
print d.text
elif d.tag in ["GOAL3", "GOAL4"]:
print d.attrib.values()[0]