2012-04-27 13 views
0
<book> 
    <title>sponge bob</title> 
    <author>Joe Doe</author> 
    <file>Tbase</file> 
</book> 

私は2つのファイルを持ち、1つはxmlで、もう1つはbase64ファイルです。私は文字列 "Tbase"をpythonを使ってbase64ファイルの内容に挿入して置き換える方法を知りたいと思います。Pythonを使用して特定のタグにbase64ファイルを挿入する方法

+0

xmlを解析し、文字列Tbaseをbase64でエンコードされた文字列に置き換える必要がありますか?どのように文字列を取得していますか? – dc5553

+0

Tbaseは固定文字列で、base64ファイルは "openssl enc -base64 -A"コマンドからのものです。 – Javier

答えて

0

"Tbase"の代わりに、base64ファイルの逐語的な内容(まだbase64でエンコードされている)をXMLファイルに入れたいですか?その場合は、あなただけのような何か行うことができます:(。あなたは、Python 2.6以降を使っているのであれば、あなたはステートメントで使用して、この少しクリーナーを行うことができますが、それは別の議論だ)

xml = open("xmlfile.xml").read() 
b64file = open("b64file.base64").read() 
open("xmlfile.xml", "w").write(xml.replace("Tbase", b64file)) 

をまずbase64ファイルにデコードし、デコードした内容をXMLファイルに置きたい場合は、上の例の最後の行のb64fileb64file.decode("base64")に置き換えます。

もちろん、単純なテキスト置換を行うと、タイトルや著者に「Tbase」も含まれていれば問題が発生します。

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>タグの内容を設定ファイルb64file.base64の内容であるとにかかわらず、その前の内容だったと関係なく、どのような:より良い方法はそうのように、実際のXML解析ライブラリを使用することです「Tbase」がXML文書の他の場所に現れるかどうか。