使用Base64编码可将二进制数据转为ASCII字符串,避免非法字符破坏XML结构,确保图片、音频等文件安全嵌入,接收方再解码还原,但数据体积增大约33%,故不适用于大文件。

在XML中直接嵌入二进制数据是不可行的,因为二进制内容可能包含非法字符或控制字节,会破坏XML的结构和解析。解决方法是将二进制数据转换为文本格式,最常用的方式就是使用Base64编码。
Base64是一种将任意二进制数据编码为ASCII字符串的方案,它只使用A-Z、a-z、0-9、+、/ 和 =(用于填充)这些安全字符,完全兼容XML的文本内容要求。
通过Base64编码,你可以安全地把图片、音频、PDF等文件嵌入XML文档中,接收方再通过解码还原原始数据。
  <?xml version="1.0" encoding="UTF-8"?>
  <fileData>
    <fileName>photo.jpg</fileName>
    <contentType>image/jpeg</contentType>
    <data>
      SUlETkFIOEBIQEY5RkFHRUZIL0NPTU1PTlRXT0tJ...(Base64字符串)
    </data>
  </fileData>
说明:
将文件编码为Base64并写入XML:
import base64
with open("photo.jpg", "rb") as f:
    binary_data = f.read()
    encoded_data = base64.b64encode(binary_data).decode('utf-8')
xml_content = f'''<?xml version="1.0" encoding="UTF-8"?>
<fileData>
  <fileName>photo.jpg</fileName>
  <contentType>image/jpeg</contentType>
  <data>{encoded_data}</data>
</fileData>'''
with open("output.xml", "w") as f:
    f.write(xml_content)
从XML中读取并解码还原文件:
import xml.etree.ElementTree as ET
import base64
tree = ET.parse("output.xml")
root = tree.getroot()
encoded_data = root.find("data").text
binary_data = base64.b64decode(encoded_data)
with open("restored_photo.jpg", "wb") as f:
    f.write(binary_data)
Base64编码会使数据体积增加约33%,因此不适合嵌入过大的文件,如大型视频或高分辨率图像集合。对于大文件,建议在XML中仅保存文件路径或URL,而不是内联数据。
确保XML声明了正确的编码(如UTF-8),因为Base64字符串属于ASCII子集,不会引起编码冲突。
基本上就这些。用Base64编码二进制数据并嵌入XML,是一种标准、可靠的做法,广泛应用于SOAP消息、配置文件和数据交换格式中。
以上就是怎么在XML中嵌入二进制数据_XML中通过Base64编码嵌入二进制数据的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号