WFR 发表于 2023-10-10 16:26:09

用python进行xml解析 时遇见的问题

"""
pythonsax解析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
从网上找不到解决方法

isdkz 发表于 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作为解析器了。

Mike_python小 发表于 2023-10-10 16:28:20

问题描述:
您在使用Python的xml.sax模块解析XML时遇到了问题。您尝试使用xml.sax.make_parser()创建XMLReader对象时出现了错误。

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

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

1. 确保您已安装了适当的解析器库,例如python-xml、python-lxml或python3-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.ElementTree或lxml.etree。

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

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

WFR 发表于 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'])
能问一下这个函数中的中括号的内容是什么意思吗?

WFR 发表于 2023-10-10 16:34:34

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

已经引进了xml.sax
没有用效果的原因吗?
页: [1]
查看完整版本: 用python进行xml解析 时遇见的问题