跳转到主要内容

用于将 ``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 (12.5 kB 查看哈希)

上传时间 源代码

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面