我正在尝试使用lxml解析xml文件。 xml.etree允许我简单地将文件名作为参数传递给parse
函数,所以我尝试对lxml执行相同的操作。
我的代码:
from lxml import etree
from lxml import objectify
file = "C:\Projects\python\cb.xml"
tree = etree.parse(file)
但是我收到了错误:
Traceback (most recent call last):
File "cb.py", line 5, in <module>
tree = etree.parse(file)
File "lxml.etree.pyx", line 2698, in lxml.etree.parse (src/lxml/lxml.etree.c:4
9590)
File "parser.pxi", line 1491, in lxml.etree._parseDocument (src/lxml/lxml.etre
e.c:71205)
File "parser.pxi", line 1520, in lxml.etree._parseDocumentFromURL (src/lxml/lx
ml.etree.c:71488)
File "parser.pxi", line 1420, in lxml.etree._parseDocFromFile (src/lxml/lxml.e
tree.c:70583)
File "parser.pxi", line 975, in lxml.etree._BaseParser._parseDocFromFile (src/
lxml/lxml.etree.c:67736)
File "parser.pxi", line 539, in lxml.etree._ParserContext._handleParseResultDo
c (src/lxml/lxml.etree.c:63820)
File "parser.pxi", line 625, in lxml.etree._handleParseResult (src/lxml/lxml.e
tree.c:64741)
File "parser.pxi", line 565, in lxml.etree._raiseParseError (src/lxml/lxml.etr
ee.c:64084)
lxml.etree.XMLSyntaxError: AttValue: " or ' expected, line 2, column 26
我做错了什么?
答案 0 :(得分:1)
你做错了是(1)没有检查你是否通过在同一个文件上使用xml.etree
得到了相同的结果(2)没有读取错误消息,这表明第2行的语法错误文件,来自任何文件打开问题的下游文件
答案 1 :(得分:1)
今天早上我偶然发现了类似的错误消息,对我来说,答案是错误的DTD。在我的DTD中,有一个属性定义,默认值没有用引号括起来 - 只要我改变它,错误就不再发生了。
答案 2 :(得分:0)
XML Markup 中存在语法错误。你没有做错任何事。
答案 3 :(得分:0)
lxml允许您通过使用recover=True
创建解析器实例来加载损坏的xmletree.XMLParser(recover=True)
虽然这不理想,但我使用它来加载一个xml for schema / dtd / schematron验证。