+-

lxml提供了一些不同的函数来解析字符串.其中两个,
etree.fromstring()和
etree.XML(),看起来非常相似.前者的文档字符串表示它用于解析“字符串”,而后者表示“字符串常量”.另外,XML()的文档字符串状态:
This function can be used to embed “XML literals” in Python code, […]
这些功能之间的功能区别是什么?应该何时使用另一个?
最佳答案
看 source code,
XML()和
fromstring(),前者有这个额外的代码片段:
if parser is None:
parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
if not isinstance(parser, XMLParser):
parser = __DEFAULT_XML_PARSER
因此,它们的副作用不同:XML()仅使用默认的XML解析器作为默认解析器.如果默认解析器已更改为非XMLParser,则XML()将忽略它.
etree.set_default_parser(etree.HTMLParser())
etree.tostring(etree.fromstring("<root/>"))
# b'<html><body><root/></body></html>'
etree.tostring(etree.XML("<root/>"))
# b'<root/>'
点击查看更多相关文章
转载注明原文:python – lxml中`etree.fromstring()`和`etree.XML()`之间的功能区别是什么? - 乐贴网