用于将 ``lxml`` 树序列化为字符串的包装器。
项目描述
此软件包为 lxml 树提供了一个包装器,它在迭代时将序列化为字符串,但否则将树作为属性提供。
其主要用途是 WSGI 中间件,可能避免不必要的 XML 解析和序列化。
使用方法
建议在您的应用程序方法上使用 lazy 装饰器。这允许您返回一个 lxml 树对象,然后该对象将自动转换为 XMLSerializer。
>>> from repoze.xmliter import lazy>>> @lazy ... def application(environ, start_response) ... return some_lxml_tree
您可以提供一个序列化函数,当 XMLSerializer 最终被迭代时(即响应渲染时)将使用此函数。
>>> @lazy(serializer=lxml.html.tostring) ... def application(environ, start_response) ... return some_lxml_tree
中间件可以使用 isinstance 测试结果是否是 XML 可迭代对象。
>>> from repoze.xmliter.serializer import XMLSerializer >>> isinstance(result, XMLSerializer)
在这种情况下,中间件可以直接访问结果的 tree 属性。
有两个便捷方法可以用来解析 WSGI 字符串可迭代对象并构建 XMLSerializer 对象,但如果输入可迭代对象已经是 XMLSerializer 的实例,则避免重新构建序列化器。
>>> from repoze.xmliter.utils import getXMLSerializer >>> result = getXMLSerializer(result)
或者,如果您正在解析 HTML
>>> from repoze.xmliter.utils import getHTMLSerializer >>> result = getHTMLSerializer(result)
如果 result 不是一个 XMLSerializer,它将使用一个 feed 解析器进行解析,转换为 lxml 树,并包装在 XMLSerializer 中,然后返回。
变更日志
0.6.1 (2022-01-14)
修复了与 lxml 4.7.1 或更高版本兼容的测试。修复了 问题 8。 [maurits]
0.6 - 2014-09-21
Python 3 兼容性 [Lennart Regebro]
0.5 - 2012-01-25
添加到序列化器的 __len__ 以帮助 WSGI 服务器。 [Laurence]
序列化器应该一次迭代整个字符串。 [Laurence]
0.4 - 2011-06-16
在用空字符串替换 doctype 时,确保删除尾随空格。 [Laurence]
0.3 - 2011-06-03
在序列化时添加 doctype 选项以替换 doctype。 [Laurence]
0.2 - 2010-09-11
默认使用文档编码。(这解决了在 Ubuntu 10.04 上的测试失败。) [Laurence]
在序列化 XSLResultTree 时,依赖于 xsl:output 设置。 [Laurence]
默认关闭 HTML 的美观打印,以避免影响浏览器上的渲染。 [Laurence]
0.1 - 2010-04-21
初始发布
项目详情
repoze.xmliter-0.6.1.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3682ac26dc38ea21b73eb877d2e612b6c671275ffe3fcf6ed15317b209f97cb2 |
|
MD5 | b1ba94347c7c4ecdd0c3092ee25a5458 |
|
BLAKE2b-256 | 60703a0e82929bfe771248b628986202d983f372ad6819d05ea71755b228a145 |