在python3.5项目中,我不得不读入一些xml文件,于是我决定使用lxml库。由于我正在读取文件,根据文档执行此操作的最有效方法是使用lxml.etree.parse(…)函数。在
我遇到的问题是,这个函数似乎总是使用默认的解析器,即使我传递的是自定义解析器。这个lxml.etree.fromstring(…)函数工作正常。在
这段代码显示了我遇到的问题。如果我给parse()一个文件路径,它会给出相同的输出。在
from io import StringIO
from lxml import etree
class honk(etree.ElementBase):
pass
parser_lookup = etree.ElementDefaultClassLookup(element=honk)
parser = etree.XMLParser()
parser.set_element_class_lookup(parser_lookup)
elem1 = etree.parse(StringIO("<test/>"), parser)
elem2 = etree.fromstring("<test/>", parser)
print(isinstance(elem1, honk), type(elem1))
print(isinstance(elem2, honk), type(elem2))
输出
^{pr2}$我不知道是什么原因造成的,也不知道怎么解决。我可以解决这个问题,但是图书馆里的这样一个错误似乎很奇怪。在
这是因为} Tutorial > The ^{} function :
parse()
和fromstring()
返回不同的类型。引自The ^{要获得等效类型,需要调用
getroot()
:输出:
^{pr2}$相关问题 更多 >
编程相关推荐