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()`的功能区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45535862/