Ope*_*rce 8 python python-2.6 python-3.x
import xml.parsers.expat
def start_element(name, attrs):
print('Start element:', name, attrs)
def end_element(name):
print('End element:', name)
def character_data(data):
print('Character data: %s' % data)
parser = xml.parsers.expat.ParserCreate()
parser.StartElementHandler = start_element
parser.EndElementHandler = end_element
parser.CharacterDataHandler = character_data
parser.ParseFile(open('sample.xml'))
Run Code Online (Sandbox Code Playgroud)
上面的工作在python 2.6但不在python 3.0中 - 任何使它在python 3中工作的想法非常赞赏.我上ParseFile线的错误是TypeError: read() did not return a bytes object (type=str)
Sil*_*ost 14
你需要以二进制文件打开该文件:
parser.ParseFile(open('sample.xml', 'rb'))
Run Code Online (Sandbox Code Playgroud)
我在尝试将xmltodict模块与 Python 3一起使用时遇到了这个问题。在 Python 2.7 下我没有问题,但在 Python 3 下我遇到了同样的错误。解决方案与@SilentGhost 建议的相同:
import xmltodict
def convert(xml_file, xml_attribs=True):
with open(xml_file, "rb") as f: # notice the "rb" mode
d = xmltodict.parse(f, xml_attribs=xml_attribs)
return d
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4515 次 |
| 最近记录: |