XML生成DSL

wither的Python项目详细描述


XML/HTML生成DSL

简介

wither是一个库,旨在使python下的xml生成变得简单和 格式和python代码一样好。

wither被实现为etree.element对象周围的一个薄的无标记包装器。 并通过使用python中的“with”关键字来构建嵌套树 可以使用标准工具/技术处理的etree对象的数量

通过使用python作为dsl,您可以自动确保所有标记 正确关闭并执行任意python代码来构建 列出或嵌入小部件

示例

>>> import lxml.usedoctest
>>> from wither import Node
>>> n = Node('html')
>>> with n.head as head:
...     head.title == 'Wither README Example'
...     head.link(href='http://code.pocketnix.org/wither', rel='homepage')
<...>
>>> with n.body as body:
...     body.h1 == 'Welcome to the Wither README'
...     with body.div as div:
...         div.p == 'This is the example from the README file'
...         div.p(style='color: red;') == 'Big Red Warning'
<...>
>>> print(n)
<html><head><title>Wither README Example</title><link
href="http://code.pocketnix.org/wither"
rel="homepage"/></head><body><h1>Welcome to the Wither README</h1><div><p>This
is the example from the README file</p><p style="color: red;">Big Red
Warning</p></div></body></html>

功能

  • 将python用作生成xml的dsl
  • 使用/滥用python语法使节点生成更短、更直观 吸引人
  • 使用lxml生成文档
  • 返回到内置etree实现的可能性(xxx todo:write 我)
  • 轻松创建小部件
  • 文档正确性的隐式验证(python的缩进意味着您 不能忘记关闭标签)

依赖关系

  • lxml-可以用python内置的etree支持替换它

安装

$virtualenv环境 $。环境/箱/激活 #pip安装wither

兼容性

Wither支持Python2.7和Python3.2及更高版本作为其支持的Python 但也可以在Python3和Python2.6的早期版本上工作。 当这些平台被自动测试以检查是否有损坏时 早期版本不受官方支持,失败的测试用于 仅供参考。

动机

威瑟是一个非常项目,写'因为我可以'。我有多个 以有趣的方式滥用python语法的python模块 所有数据库的事务自动重试的模式匹配 简洁且具有视觉吸引力。

在看到'with'语句及其在Python2.6中的使用之后 使用多个上下文生成器(而不是Python2.7的扁平版本)i 决定看我是否可以使用它来升级现有的XML生成 对对象使用类似概念的程序。

这个项目的目的不是创建一个快速生成器,而是创建一些 与python代码内联并支持动态 像字符串模板库这样的功能。

进一步的想法

在战略要地使用“yeild”可能会使 允许发送预渲染“帧”(或其头部部分)的模板 最少),然后生成主体,后跟(框架的)尾部 从而加快第一个字节到客户机的传输,并且 在请求结束时避免一堆传输。这应该允许 客户端可以更快地呈现这些页面,并且它们具有部分数据 他们可以开始计划页面的布局

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java通过Spring MVC web应用程序向客户端发送文本文件   java是否可以在运行时动态实例化DAO类?   调用VB。来自Java的net函数   java在Android中通过单击打开特定文件夹   java如何使用maven pom。xml标识非标准项目结构中的testng测试用例?   java为什么FOP在大文件上崩溃?   Architecture python+flask和spring boot+java   java Kafka工具根本没有启动Ubuntu 19.10   如何使用Eclipse运行Java USB API for Windows   java如何在Eclipse中查看J2EE预览服务器/容器的日志/控制台?   网页抓取是否可以使用Java crawler crawler4j暂停和恢复抓取?   java当我第二次按下按钮时,应用程序停止工作   带有偏移量和限制的java SQLite分页问题   java如何在OSX mavericks中将端口80转发到8080   java从泛型方法调用非泛型方法   java My代码未按预期工作。十进制输出不是它应该的样子   节点。java中的js加密(jasypt)和nodejs中的解密   java乘法表不工作数组索引超出范围   java将JDBC与Firebirdsql连接起来