さて、次の .csv ファイルが含まれています。
AAC=1|1|1,AAK=1|2|8
そのファイルを次の .xml ファイルに書き込みたい:
<html>
<A>
<B>
<C>
<D>
<TYPE>
<NUMBER>7297</NUMBER>
<DATA />
</TYPE>
<TYPE>
<NUMBER>7721</NUMBER>
<DATA>AAC=7|3|8,ABC=1|3|5,DAK=5|1|3,FFK=33</DATA>
</TYPE>
</D>
</C>
</B>
</A>
</html>
具体的には 7721 の下の部分に書きたいので、更新された .xml ファイルは次のようになります。
<html>
<A>
<B>
<C>
<D>
<TYPE>
<NUMBER>7297</NUMBER>
<DATA />
</TYPE>
<TYPE>
<NUMBER>7721</NUMBER>
<DATA>AAC=1|1|1,AAK=1|2|8,ABC=1|3|5,DAK=5|1|3,FFK=33</DATA>
</TYPE>
</D>
</C>
</B>
</A>
</html>
キーが .csv と .xml の両方に既に存在する場合は、.xml ファイルの値のみが更新されますが、.csv ファイルのキーと値の両方が .xml ファイルに存在しない場合は、. xml ファイルに追加すると、それらのキーと値の両方が .xml ファイルに追加されます。
これまでの私のコード:
element = etree.fromstring(xmlData)
# Find all the TYPE with NUMBER=7721 and DATA
optype_nodes = element.xpath("//TYPE[NUMBER='7721' and DATA]")
for t in optype_nodes:
d = t.find('DATA')
d.text = 'csvdata'
print etree.tostring(element)
すべての .csv コンテンツをインポートし、.xml コンテンツを完全に置き換えました。
ありがとうございました!