python 3 中的 Expat 解析

发布于 2024-07-29 05:19:34 字数 635 浏览 6 评论 0原文

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'))

上面的代码适用于 python 2.6,但不适用于 python 3.0 - 任何让它在 python 3 中工作的想法都非常感谢。 我在 ParseFile 行上收到的错误是 TypeError: read() did not return a bytes object (type=str)

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'))

The above works in python 2.6 but not in python 3.0 - any ideas to make it work in python 3 much appreciated. The error I get on the ParseFile line is TypeError: read() did not return a bytes object (type=str)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

別甾虛僞 2024-08-05 05:19:34

您需要将该文件作为二进制文件打开:

parser.ParseFile(open('sample.xml', 'rb'))

you need to open that file as binary:

parser.ParseFile(open('sample.xml', 'rb'))
对不⑦ 2024-08-05 05:19:34

我在尝试将 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

I ran into this problem while trying to use the xmltodict module with Python 3. Under Python 2.7 I had no problems but under Python 3 I got this same error. The solution is the same that was suggested by @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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文