读取XML文件转换为字符串时遇编码错误的技术求助
解决XML转字符串时的LookupError问题
问题原因
你遇到的LookupError: unknown encoding: unicode是因为xml.etree.ElementTree.tostring()方法不支持将'unicode'作为编码参数值,该参数需要传入标准编码名称(如utf-8、ascii)。另外代码里还有一处疏漏:ET.parse()返回的是ElementTree对象,而tostring()需要传入具体的Element节点(通常是根节点)。
解决方法
以下两种方案均可解决问题:
方案一:获取字节流后解码为字符串
import xml.etree.ElementTree as ET # 解析XML文件 tree = ET.parse('file.xsd') # 获取根节点 root = tree.getroot() # 生成UTF-8编码的字节流,再解码为字符串 xml_bytes = ET.tostring(root, encoding='utf-8') xml_str = xml_bytes.decode('utf-8')
方案二:Python 3.9+ 直接返回字符串
如果你的Python版本是3.9及以上,可通过text=True参数让tostring()直接返回字符串类型:
import xml.etree.ElementTree as ET tree = ET.parse('file.xsd') root = tree.getroot() # 直接返回字符串 xml_str = ET.tostring(root, encoding='utf-8', text=True)
内容的提问来源于stack exchange,提问作者Sam12
相关产品推荐
相关产品推荐

