我想遍历和元素的子元素并检查它们的属性。如果缺少某个属性值,它应该附加一个带有该属性值的空元素。检查xml属性并用Python追加元素3.4
所以这样的:
<app>
<rdg wit="#W_1956">Im Restaurant </rdg>
<rdg wit="#W_2002">Im Restaurant </rdg>
<rdg wit="#W_2010">Im Restaurant </rdg>
</app>
我要添加元素
<rdg wit="#W_1999"/>
我的Python代码如下所示:
for app in root.findall('app'):
if '#W_1956' not in ET.Element('rdg').attrib:
new_tag = ET.SubElement(app, 'rdg')
new_tag.attrib['wit'] = '#W_1956'
if '#W_1999' not in ET.Element('rdg').attrib:
new_tag = ET.SubElement(app, 'rdg')
new_tag.attrib['wit'] = '#W_1999'
这给了我这个XML:
<app>
<rdg wit="#W_1956">Im Restaurant </rdg>
<rdg wit="#W_2002">Im Restaurant </rdg>
<rdg wit="#W_2010">Im Restaurant </rdg>
<rdg wit="#W_1956"/>
<rdg wit="#W_1999"/>
</app>
因此,即使源代码中存在具有W_1956属性的元素,它仍然会添加它。我也尝试过findall('rdg'),但这也不起作用(输出XML保持完全不变)。现在我不知道错误是在if语句中,elementree(子)元素中的某处还是代码完全错误。
谢谢你,但这种增加在根的RDG标签不作为应用程序标签 ' 的孩子...... ' –
Ilkar
仔细一看。 etree输出在最后不能很好地压缩缩进,但标签被添加到* app *的子元素中。 – Parfait