次のように、2つのXMLファイルを解析してPythonEtreeパーサーと比較したいと思います。
大量のデータを含む2つのXMLファイルがあります。1つは英語(ソースファイル)で、もう1つは対応するフランス語の翻訳(ターゲットファイル)です。例えば:
ソースファイル:
<AB>
<CD/>
<EF>
<GH>
<id>123</id>
<IJ>xyz</IJ>
<KL>DOG</KL>
<MN>dogs/dog</MN>
some more tags and info on same level
<metadata>
<entry>
<cl>Translation</cl>
<cl>English:dog/dogs</cl>
</entry>
<entry>
<string>blabla</string>
<string>blabla</string>
</entry>
some more strings and entries
</metadata>
</GH>
</EF>
<stuff/>
<morestuff/>
<otherstuff/>
<stuffstuff/>
<blubb/>
<bla/>
<blubbbla>8</blubbla>
</AB>
ターゲットファイルはまったく同じように見えますが、一部の場所にテキストがありません。
<MN>chiens/chien</MN>
some more tags and info on same level
<metadata>
<entry>
<cl>Translation</cl>
<cl></cl>
</entry>
フランス語のターゲットファイルには空の言語間参照があり、2つのマクロのIDが同じである場合は常に、英語のソースファイルからの情報を入力したいと思います。言語間の参照を識別するために、文字列タグ名を一意のタグ名に置き換えたコードをすでに作成しました。次に、2つのファイルを比較し、2つのマクロのIDが同じである場合は、フランス語のファイルの空の参照を英語のファイルの情報と交換します。以前はミニドムパーサーを試していましたが、行き詰まり、今すぐEtreeを試したいと思います。私はプログラミングについてほとんど知識がなく、これは非常に難しいと思います。これが私がこれまでに持っているコードです:
macros = ElementTree.parse(english)
for tag in macros.getchildren('macro'):
id_ = tag.find('id')
data = tag.find('cl')
id_dict[id_.text] = data.text
macros = ElementTree.parse(french)
for tag in macros.getchildren('macro'):
id_ = tag.find('id')
target = tag.find('cl')
if target.text.strip() == '':
target.text = id_dict[id_.text]
print (ElementTree.tostring(macros))
私は無知以上のものであり、これに関する他の投稿を読むことは私をさらに混乱させます。誰かが私を教えてくれたらとてもありがたいです:-)