用xm混合字符串和基64

2024-06-16 10:44:45 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我有问题,因为我想有二进制的xml文件。 问题是base64编码,我不知道如何编码图像和添加到字符串。 我要在那之后解析这个并解码图像。在

stringResult = ResultXMLTag.ROOT_BEGIN + '\n'

f = open('id_'+str(1)+'.png','rb+')

stringResult += ResultXMLTag.RESULT_BEGIN+' '+'ID=\'1\'>\n'
stringResult += ResultXMLTag.CDATA_BEGIN+'\n'
stringResult += base64.b64encode(f.read())

stringResult2 = '\n'+ ResultXMLTag.CDATA_END+'\n'
stringResult2 += ResultXMLTag.RESULT_END+'\n'
stringResult2 += ResultXMLTag.ROOT_END
    return stringResult + stringResult2

data = ET.fromstring(self.downloadData(connection))
for result in data.findall('./RESULT'):
    _id = result.get('ID')
    out = open('id_'+_id+'.png','wb+')
    out.write(base64.decode(result.findtext('').encode()))

编辑错误符合base64“TypeError:无法将'bytes'对象隐式转换为str”

编辑示例

^{pr2}$

第二个版本

>>> x = 'cat' + str(base64.b64encode(b'dog'))
>>> x
"catb'ZG9n'"

我应该用女巫版本来发送图像?我想我所有的问题都是因为如何附加字符串和字节。简单地说,编码图像然后解码,但这不是我的情况。在


Tags: 字符串图像id编码rootresult解码end
2条回答

更新: downloadData()也可能有问题。您使用的是urlopen()吗?您确定在从downloadData()接收后显式转换为字符串吗?在

问题可能在于如何创建XML。排队:

stringResult += ResultXMLTag.RESULT_BEGIN+' '+'ID=\'1\'>\n'

属性“ID”的引号在哪里?在

你能在没有这个XML数据的情况下解析图像吗?将一个base64编码的字符串与一个非编码的字符串连接起来不会引起任何问题,它们都是字符串。在

在python3中,^{}返回一个字节字符串。您需要将其转换为Unicode字符串。输出保证为ASCII字节,因此转换非常简单。在

stringResult += base64.b64encode(f.read()).decode('ascii')

相关问题 更多 >