鱼C论坛

 找回密码
 立即注册
查看: 751|回复: 4

[已解决]用python进行xml解析 时遇见的问题

[复制链接]
发表于 2023-10-10 16:26:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
"""
python  sax解析xml

"""
import xml.sax


class SchoolHandler(xml.sax.ContentHandler):
    def __init__(self):
        self.CurrentData = ""
        self.name = ""
        self.format = ""


# 开始调用
def startElement(self, tag, attributes):
    self.CurrentData = tag
    if tag == "school":
        print("******************school****************")
        level = attributes['level']
        print("Level: ", level)


# 结束调用
def endElement(self, tag):
    if self.CurrentData == "name":
        print("name:", self.name)
    elif self.CurrentData == "year":
        print("year:", self.year)
        self.CurrentData = ""


# 读取字符时调用
def characters(self, content):
    if self.CurrentData == "name":
        self.name = content
    elif self.CurrentData == "year":
        self.year = content


if __name__ == "__main__":
    # 创建一个XMLReader
    parser = xml.sax.make_parser()
    # turn off namepsaces
    parser.setFeature(xml.sax.handler.feature_namepsaces, 0)
    # 重写ContextHandler()
    Handler = SchoolHandler()
    parser.setContentHandler(Handler)
    parser.parse("school_sax.xml")




产生如下错误:
D:\pythonProject2\Scripts\python.exe D:\pythonProject1\SAX_DOM.py
Traceback (most recent call last):
  File "D:\pythonProject1\SAX_DOM.py", line 43, in <module>
    parser = xml.sax.make_parser()
             ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\HP\AppData\Local\Programs\Python\Python312\Lib\xml\sax\__init__.py", line 88, in make_parser
    raise SAXReaderNotAvailable("No parsers found", None)
xml.sax._exceptions.SAXReaderNotAvailable: No parsers found

进程已结束,退出代码1
从网上找不到解决方法
最佳答案
2023-10-10 16:28:20
问题描述:
您在使用Python的xml.sax模块解析XML时遇到了问题。您尝试使用xml.sax.make_parser()创建XMLReader对象时出现了错误。

错误信息:
错误信息显示SAXReaderNotAvailable: No parsers found,表示没有找到可用的解析器。

解决方法:
这种错误通常是由于缺少适当的解析器库所致。为了解决这个问题,您可以尝试以下几种方法:

1. 确保您已安装了适当的解析器库,例如python-xmlpython-lxmlpython3-lxml。您可以尝试使用以下命令安装其中一个库:
   - pip install python-xml
   - pip install lxml(需要C编译工具)
   - apt-get install python3-lxml(适用于Debian/Ubuntu系统)
   - yum install python3-lxml(适用于CentOS/RHEL系统)

2. 如果您已经安装了解析器库但仍然遇到问题,请确认您的Python解析器和解析器库是否匹配。例如,如果您的Python解释器是Python 3.x版本,那么您应该使用与之对应的解析器库。

3. 如果您在IDE中尝试运行代码,请确保您的IDE环境配置正确,并且能够访问已安装的解析器库。

4. 如果上述方法仍然无法解决问题,您可以尝试使用其他XML解析库,例如xml.etree.ElementTreelxml.etree

请尝试以上方法,并检查是否解决了问题。如果仍然有疑问,请提供更多信息以便我们进行进一步的帮助。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-10 16:26:33 | 显示全部楼层
你的代码中使用了Python内置的xml.sax模块来解析XML文件,但是你遇到了"No parsers found"的错误,这是因为在你的Python环境中没有找到可用的XML解析器。

解决方法是安装一个可用的XML解析器,比如说Python自带的xml.etree.ElementTree或者lxml库。你可以通过以下命令安装lxml库:
pip install lxml

安装完成后,将以下代码:
parser = xml.sax.make_parser()

修改为:
parser = xml.sax.make_parser(['xml.sax.drivers2.drv_lxml'])

这样就可以使用lxml作为解析器了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-10 16:28:20 | 显示全部楼层    本楼为最佳答案   
问题描述:
您在使用Python的xml.sax模块解析XML时遇到了问题。您尝试使用xml.sax.make_parser()创建XMLReader对象时出现了错误。

错误信息:
错误信息显示SAXReaderNotAvailable: No parsers found,表示没有找到可用的解析器。

解决方法:
这种错误通常是由于缺少适当的解析器库所致。为了解决这个问题,您可以尝试以下几种方法:

1. 确保您已安装了适当的解析器库,例如python-xmlpython-lxmlpython3-lxml。您可以尝试使用以下命令安装其中一个库:
   - pip install python-xml
   - pip install lxml(需要C编译工具)
   - apt-get install python3-lxml(适用于Debian/Ubuntu系统)
   - yum install python3-lxml(适用于CentOS/RHEL系统)

2. 如果您已经安装了解析器库但仍然遇到问题,请确认您的Python解析器和解析器库是否匹配。例如,如果您的Python解释器是Python 3.x版本,那么您应该使用与之对应的解析器库。

3. 如果您在IDE中尝试运行代码,请确保您的IDE环境配置正确,并且能够访问已安装的解析器库。

4. 如果上述方法仍然无法解决问题,您可以尝试使用其他XML解析库,例如xml.etree.ElementTreelxml.etree

请尝试以上方法,并检查是否解决了问题。如果仍然有疑问,请提供更多信息以便我们进行进一步的帮助。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-10 16:30:32 | 显示全部楼层
isdkz 发表于 2023-10-10 16:26
你的代码中使用了Python内置的xml.sax模块来解析XML文件,但是你遇到了"No parsers found"的错误,这是因为 ...

parser = xml.sax.make_parser(['xml.sax.drivers2.drv_lxml'])
能问一下这个函数中的中括号的内容是什么意思吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-10 16:34:34 | 显示全部楼层
Mike_python小 发表于 2023-10-10 16:28
问题描述:
您在使用Python的xml.sax模块解析XML时遇到了问题。您尝试使用xml.sax.make_parser()创建XMLRea ...

已经引进了xml.sax
没有用效果的原因吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-13 14:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表