<book>
<title>sponge bob</title>
<author>Joe Doe</author>
<file>Tbase</file>
</book>
2 つのファイルがあります。1 つは xml ファイルで、もう 1 つは base64 ファイルです。Pythonを使用して、文字列「Tbase」をbase64ファイルの内容に挿入して置き換える方法を知りたいです。
「Tbase」の代わりに、base64 ファイル (まだ base64 でエンコードされている) の逐語的な内容を XML ファイルに入れたいですか? その場合は、次のようにするだけです。
xml = open("xmlfile.xml").read()
b64file = open("b64file.base64").read()
open("xmlfile.xml", "w").write(xml.replace("Tbase", b64file))
(Python 2.6 以降を使用している場合は、 with ステートメントを使用してこれを少しきれいにすることができますが、それは別の議論です。)
最初に base64 ファイルをデコードb64file
し、デコードしたコンテンツを XML ファイルに配置する場合は、上記の例の最後の行をb64file.decode("base64")
.
もちろん、上記のように単純なテキスト置換を行うと、たとえば、タイトルまたは著者に「Tbase」も含まれている場合に問題が発生する可能性があります。より良い方法は、次のように実際の XML 解析ライブラリを使用することです。
from xml.etree.ElementTree import fromstring, tostring
xml = fromstring(open("xmlfile.xml").read())
xml.find("file").text = open("b64file.base64").read()
open("xmlfile.xml", "w").write(tostring(xml))
これにより、<file>
タグのコンテンツが file のコンテンツになるように設定されます。これは、b64file.base64
その以前のコンテンツが何であったか、および「Tbase」が XML ドキュメントの他の場所に表示されるかどうかに関係ありません。