0
<book>
  <title>sponge bob</title>
  <author>Joe Doe</author>
  <file>Tbase</file>
</book>

我有 2 个文件,一个是 xml,另一个是 base64 文件。我想知道如何使用 python 将字符串“Tbase”插入和替换为 base64 文件的内容。

4

1 回答 1

0

您是否要将 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 文档的其他地方。

于 2012-05-03T07:34:30.583 回答