今天使用python操控一个控件时,需要修改xml 配置文件(<?xml version="1.0" encoding="gb2312"?>),
发现在直接解析xml文件来报错:ValueError: multi-byte encodings are not supported,
网上查询了一些方法:如通过记事本修改文件编码;通过替换字符串方式将 gb2312直接修改为utf-8。虽然都可以正常解析XML,
但是略显麻烦,最简单的方式通过open的方式读取字符串,然后解析字符串。
>>> import xml.etree.ElementTree as ET
>>> ET.parse(r"d:\test.xml") #ValueError: multi-byte encodings are not supported
>>> with open(xml,"r",encoding="utf-8") as f:
datasource=f.read()
f.close()
>>> ET.fromstring(datasource) # ok
<Element 'sites' at 0x046A8900>
>>> from xml.dom.minidom import parse, parseString
>>> dom=parse(r"d:\test.xml") # ValueError: multi-byte encodings are not supported
>>> with open(r"d:\test.xml","r",encoding="utf-8") as f:
datasource=f.read()
f.close()
>>> parseString(datasource) # ok
<xml.dom.minidom.Document object at 0x0466F458>