如何将XML文件传递给lxml进行解析?

12 投票
4 回答
13401 浏览
提问于 2025-04-15 23:37

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

我哪里做错了呢?

相关问题:

4 个回答

0

你的 XML标记 有一个语法错误。你并没有做错什么。

1

今天早上我遇到了一个类似的错误信息,对我来说,问题出在一个格式不正确的DTD上。在我的DTD里,有一个属性定义的默认值没有用引号括起来——一旦我把它加上,引发的错误就消失了。

1

你做错的地方是 (1) 没有检查一下用 xml.etree 处理同一个文件时的结果是否一样 (2) 没有仔细看错误信息,那个信息告诉你在文件的第二行有语法错误,这个错误和打开文件的问题没有关系。

撰写回答