Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 哪个XML解析器的错误报告最具可读性?_Python_Xml_Xml Parsing_Python 2.7_Minidom - Fatal编程技术网

Python 哪个XML解析器的错误报告最具可读性?

Python 哪个XML解析器的错误报告最具可读性?,python,xml,xml-parsing,python-2.7,minidom,Python,Xml,Xml Parsing,Python 2.7,Minidom,在python中,标准安装提供了许多方法来处理XML,甚至可以作为外部包,请参阅 对于我的项目,我使用的是minidom,它可以满足我的需要,但错误报告相当简单,例如: no element found: line 7, column 0 这是正确的,但不是非常人类可读的,没有暗示可能需要哪个元素。由于缺少信息,我无法向用户报告错误 这只是一个示例,但在更多的情况下,minidom可能更详细,但不是。所以我需要一些详细的信息,一个足够详细的错误,我可以将解析错误传递给用户 哪种标准XML“处理

在python中,标准安装提供了许多方法来处理XML,甚至可以作为外部包,请参阅

对于我的项目,我使用的是
minidom
,它可以满足我的需要,但错误报告相当简单,例如:

no element found: line 7, column 0
这是正确的,但不是非常人类可读的,没有暗示可能需要哪个元素。由于缺少信息,我无法向用户报告错误

这只是一个示例,但在更多的情况下,minidom可能更详细,但不是。所以我需要一些详细的信息,一个足够详细的错误,我可以将解析错误传递给用户

哪种标准XML“处理解决方案”具有最详细的错误报告(如果没有),哪种XML支持外部软件包具有该信息? 用于解析的xml文件(在代码中用作
config.xml
是:

<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns="http://www.w3.org/ns/widgets">
    <icon src="icon.png"/>
    <content src="index.html"/>
<name>sample</name>

样品

我试图对上述链接中的所有解析器进行调查,看看哪一个具有最有用的错误报告,我停在lxml:


你为什么不试试呢?一个带有BeautifulSoup和lxml的virtualenv很快就建立起来了。@MartijnPieters可能这就是我要做的,但我认为我不应该重新发明轮子,先问问题。@MartijnPieters重新发明了遗嘱,尝试了一些解析器,看到了答案,关于lxml,您是对的。您也可以检查BeautifulSoup吗?@jterrace:BeautifulSoup使用python
HTMLParser
库,或者可选的
lxml
html5lib
解析器。这些是HTML解析器,而不是XML,这是有区别的。@jterrace:看看您是否在处理大文件LXML有一个限制,即它不会报告超过65535行的错误行号-@George幸运的是,在配置文件中不太可能有这么多行,感谢您指出这个限制
import xml.dom.minidom as  md
md.parse("config.xml")
#xml.parsers.expat.ExpatError: no element found: line 7, column 0


import elementtree.ElementTree as ET
tree = ET.parse("config.xml")
#xml.parsers.expat.ExpatError: no element found: line 7, column 0


from xml import sax
parser = sax.make_parser()
parser.parse("config.xml")
#xml.sax._exceptions.SAXParseException: config.xml:7:0: no element found


import xml.etree.cElementTree as et
et.parse("config.xml")
#cElementTree.ParseError: no element found: line 7, column 0

import xml.dom.pulldom as pd
doc = pd.parse("config.xml")
for event, node in doc:
     print event, node

#xml.sax._exceptions.SAXParseException: <unknown>:7:0: no element found

import lxml.etree
tree = lxml.etree.parse("config.xml")

#lxml.etree.XMLSyntaxError: Premature end of data in tag widget line 2, line 7, column 1
"Premature end of data in tag widget line 2, line 7, column 1"