Python 将XML数据读入字典
我有一个小的XML片段,如下所示。我想得到: 组名属性 与groupname对应的groupfilter表达式属性 我需要将这些值显示为表,所以必须使用组名的对应表达式 我的XML文件: 我的尝试: root1是将xml解析为文件的etree的根元素Python 将XML数据读入字典,python,python-3.x,xml-parsing,elementtree,Python,Python 3.x,Xml Parsing,Elementtree,我有一个小的XML片段,如下所示。我想得到: 组名属性 与groupname对应的groupfilter表达式属性 我需要将这些值显示为表,所以必须使用组名的对应表达式 我的XML文件: 我的尝试: root1是将xml解析为文件的etree的根元素 for setvar in root1.findall('.//group'): setname.append(setvar.get('name')) groupfilter = setvar.findall('.//groupfi
for setvar in root1.findall('.//group'):
setname.append(setvar.get('name'))
groupfilter = setvar.findall('.//groupfilter')
if groupfilter:
for i in groupfilter:
if i.get('expression'):
setexpression.append(i.get('expression'))
else:
setexpression.append('')
为了将结果显示为表,我将它们附加到列表中。是否可以将这两个数据提取为字典中的键、值对?不需要转换为dict或list。只需使用XML树作为基本数据结构
for group in tree.iterfind('.//group'):
for groupfilter in group.iterfind('.//groupfilter[@expression]'):
groupname = group.get('name')
expression = groupfilter.get('expression')
print([groupname, expression])
这仅选择实际具有表达式的groupfilter元素
通过所有groupfilter元素同样容易:
for group in tree.iterfind('.//group'):
for groupfilter in group.iterfind('.//groupfilter'):
groupname = group.get('name')
expression = groupfilter.get('expression', '') # default: empty string
print([groupname, expression])
为第二个代码示例获取name和expression@tomalak的重复值?你当然知道。当你看一下你的XML,你就会明白为什么。是的,有多个GroupFilter。但是,如果找不到表达式属性,是否可以设置一些条件以返回null“”@如果只想选择顶级元素,而不是嵌套元素,请使用“./groupfilter”而不是“./groupfilter”。Python中没有空值,但没有空值。如果访问未定义的属性,get将返回None,但在您的问题中,您似乎想要一个空字符串,所以我的代码就是这样做的。你会知道要改变什么。