<book>
<title>sponge bob</title>
<author>Joe Doe</author>
<file>Tbase</file>
</book>
我有 2 个文件,一个是 xml,另一个是 base64 文件。我想知道如何使用 python 将字符串“Tbase”插入和替换为 base64 文件的内容。
您是否要将 base64 文件(仍为 base64 编码)的逐字内容放入 XML 文件中,而不是“Tbase”?如果是这种情况,您可以执行以下操作:
xml = open("xmlfile.xml").read()
b64file = open("b64file.base64").read()
open("xmlfile.xml", "w").write(xml.replace("Tbase", b64file))
(如果您使用的是 Python 2.6 或更高版本,则可以使用 with 语句更简洁地执行此操作,但这是另一个讨论。)
如果您想先解码base64 文件,然后将解码后的内容放入 XML 文件,那么您可以将b64file
上面示例的最后一行替换为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>
标记的内容设置为文件的内容b64file.base64
,而不管它以前的内容是什么,也不管“Tbase”是否出现在 XML 文档的其他地方。