基于规则的xml转换

ruledxml的Python项目详细描述


给定一个XML文件。使用规则文件将其转换为另一个XML文件。 规则文件读取一些元素,对其进行处理并返回一个新值 它被写入xml路径。规则受到业务规则引擎的启发 例如Intellect

安装

使用源包安装:

  1. python3 setup.py install
  2. pip3 install -r requirements.txt

从PYPI安装:

  1. pip3 install ruledxml

运行测试套件:

  1. 开始python3
  2. 运行import ruledxml.tests
  3. 运行ruledxml.tests.runall()

规则

规则的编写只需要很少的技术知识。 然而,并非所有的转换(与xslt类似)都是可能的。 如果元素在源XML中多次出现, 能力有限。

规则是用python编程语言编写的:

@source("/root/body/header")
@destination("/html/body/article/h1")
def ruleFirstHeader(header):
    return header + "!"

xpath/root/body/header处的第一个元素是read,它的 文本内容被查找并作为参数传递header 到函数ruleFirstHeader

如果源元素不存在,则提供空字符串。 请注意,源参数始终是字符串。

该规则返回附加了感叹号的原始标题。 返回值写入目标xpath /html/body/article/h1。所有不存在的元素都将被创建。 如果元素已经存在,则进行第一个匹配。

必需元素

《设计》中的错误来源是当元素不存在时 并提供一个空字符串作为参数。这是一个无声的错误。

可以在变量input_required中指定所需的元素 在实际处理开始之前解释:

input_required = [
    "/root/body/header"
]

如果在源XML文件中不存在元素^ {tT7}$, 引发valueerror。

非空元素

与必需元素类似,我们有非空元素。提及的路径 在input_nonempty变量中,需要生成非空值。 否则将引发错误并中止处理。

实施

一点点lxml和许多装饰魔法;)

许可证

3条BSD许可证。因此您可以使用该软件 不管你喜欢什么,如果你想提到我的名字 在你的软件产品中,你需要问我。

干杯, 梅斯特鲁克admin@lukas-prokop.at>;

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

推荐PyPI第三方库


热门话题
java如何在Kotlin中加速从短数组到位图的转换   java如何计算用户从5个组合框中选择的项目的总成本   如何实现Java图像处理来进行模板匹配?   java Android Studio Gradle找不到'com'。安卓支持:设计:22.2.0'(Android设计支持库)   Tomcat上的hibernate Java持久性没有名为EntityManager的持久性提供程序   Weblogic中有两个EAR的java Log4j日志记录问题   Java忽略字符串   java stringbuffer和“0&”导致截断或转义   在java中用猜测的字母替换破折号   java使用枚举查找长字符串描述   在Android Studio中选择图像后,java应用程序退出(未调用OnActivityResult)   java什么是类似于Rails的面向对象桌面应用程序框架?   java有没有一种方法可以在调试时永久更改变量的值,从而在后续调用中不被重写?   java NullPointerException从数据库获取数据时,使用注释调用Struts 2中的操作