minidom パーサーを使用して XML ファイルを解析しています。ここでは、XML を反復処理し、タグの間にある特定の情報を辞書に出力しています。
このような:
d={}
dom = parseString(data)
macro=dom.getElementsByTagName('macro')
for node in macro:
d={}
id_name=node.getElementsByTagName('id')[0].toxml()
id_data=id_name.replace('<id>','').replace('</id>','')
print (id_data)
cl_name=node.getElementsByTagName('cl')[1].toxml()
cl_data=cl_name.replace('<cl>','').replace('</cl>','')
print (cl_data)
d_source[id_data]=(cl_data)
さて、私の問題は、cl_name=node.getElementsByTagName('cl')[1].toxml() で探しているデータが存在しない場合があることです!
この場合、XML の一部は次のようになります。
<cl>blabla</cl>
<cl></cl>
このため、「インデックスが範囲外です」というエラーが表示されます。しかし、私は辞書にこの「無」が本当に必要です。私の辞書は次のようになります。
d={blabla:'',xyz:'abc'}
空のテキスト ノードを探す必要があります。これを実行してみました。
if node.getElementsByTagName('cl')[1].toxml is None:
print ('')
else:
cl_name=node.getElementsByTagName('cl')[1].toxml()
cl_data=cl_name.replace('<cl>','').replace('</cl>','')
print (cl_data)
d_target[id_data]=(cl_data)
print(d_target)
まだインデックス作成エラーが表示されます... 元のソース ファイルに空白を挿入することも考えましたが、これで問題が解決するかどうかはわかりません。何か案は?