将两个XML标记融合在一起

xmlfuse的Python项目详细描述


XML保险丝

Build StatusPyPI version

给定两个具有相同文本的XML文档,将标记融合在一起以创建输出XML文档。在

安装

pip install xmlfuse

建造和测试:

如果您喜欢从源代码构建,请执行以下步骤:

^{pr2}$

美国石油学会

importlxml.etreeasetfromxmlfuse.fuseimportfusexml1=et.fromstring('<span>Hello, <i>world!</i></span>')xml2=et.fromstring('<span><b>Hello</b>, world!</span>')xml=fuze(xml1,xml2)assertet.tostring(xml)==b'<span><b>Hello</b>, <i>world!</i></span>'

输入文档必须具有完全相同的文本

如果文本不同,则引发错误。空白很重要!在

示例:

xml1=et.fromstring('<span>Hello</span>')xml2=et.fromstring('<span>Good bye</span>')xml=fuze(xml1,xml2)# expect RuntimeError raised

冲突标记

标记冲突。有时不可能合并两个标记,因为标记相交。在这种情况下,人们可以选择:

a.引发异常并让调用者处理问题 b、 通过分割其中一个标记来解决问题

将<$str^/second。主标记从不分段。如果有 主标记和从标记之间的冲突(如果auto_segment标志是True),则fuse()将分段从属标记以使标记一致。在

示例:

xml1=et.fromstring('<span>Hel<i>lo, world!</i></span>')xml2=et.fromstring('<span><b>Hello</b>, world!</span>')xml=fuze(xml1,xml2)assertet.tostring(xml)==b'<span><b>Hel<i>lo</i></b></i>, <i>world!</i></span>'

auto_segment标志设置为False以防止分段。如果检测到冲突,则将引发错误。在

模棱两可

当主标记和从标记包装相同的文本时,会出现嵌套错误-哪个标记应该是内部的?在

我们通过不断尝试将slave标记放在master中来解决这个问题。这种行为是可以改变的 通过将标志prefer_slave_inner设置为false。在

示例:

xml1=et.fromstring('<span><i>Hello</i>, world!</span>')xml2=et.fromstring('<span><b>Hello</b>, world!</span>')xml=fuze(xml1,xml2,prefer_slave_inner=True)assertet.tostring(xml)==b'<span><b><i>Hello</i></b>, world!</span>'xml=fuze(xml1,xml2,prefer_slave_inner=False)assertet.tostring(xml)==b'<span><i><b>Hello</b></i>, world!</span>'

从顶级标记被删除

请注意,slave的顶层标记没有合并。只是掉下来了。如果你想合并到输出中, 设置strip_slave_top_tag=False。在

fuse()签名

fuse(xml1,xml2,*,prefer_slave_inner=True,auto_segment=True,strip_slave_top_tag=True)

其中:

  • xml1是主XML文档(LXML元素对象,请参见http://lxml.de
  • xml2是从XML文档
  • prefer_slave_inner控制模糊分辨率
  • auto_segment允许在标记冲突的情况下进行从属smarkup分段
  • strip_slave_top_tag允许fuse忽略从XML的顶层标记

返回融合的XML文档

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

推荐PyPI第三方库


热门话题
java OnResizeListener或OnDrawListener或类似的东西   java Orika映射嵌套子列表   保存时java Heroku请求超时代码H12   数据库在Java中出现socket读取超时异常的原因是什么?   java如何更改来自Sqlite数据库的特定数据在Listview中的行颜色   java JAXB解组器无法正确处理XML中的列表   java Android日期时区让我抓狂   java不透明属性在Swing中如何工作?   eclipse从JavaEE代码生成流程图   java如何在Hibernate中从相关表中获取计数   java Glassfish部署了项目的依赖项库   java使内容适合JavaFx中的WebView   java不满意的链接错误libcrypto。所以1.0.0   循环中java数组的使用   java找出哪个包调用服务