要素の要素と要素を繰り返し処理し、その属性をチェックします。特定の属性値が欠落している場合は、その属性値を持つ空の要素を追加する必要があります。xmlの属性をチェックし、Python 3.4で要素を追加します。
だからこれに:
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>
</app>
私は
<rdg wit="#W_1999"/>
私のPythonのコードは次のようになります要素を追加したいです
<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-statement、elementree-(sub)要素のどこかに誤りがあるのか、コードが完全に間違っているのかは分かりません。
ありがとうございましたが、これはアプリタグ の子供 ... ' –
Ilkar
近くをご覧ください。 etreeの出力は、インデントが正しく終わりでは正しく印刷されませんが、タグは* app *の子に追加されます。 – Parfait