XML作为纯对象模块

xmlplain的Python项目详细描述


xmlplan

XML作为纯对象实用程序模块

构建状态

Synopsys

此模块是一组实用函数,用于分析自包含的 XML输入到纯列表/dict/string类型并发送到/读取 从XML或YAML格式。

其动机是将xml转储到yaml,手动编辑 将文件作为yaml,并返回xml输出。

尽管此模块可以更简单地用于转储兼容的plain 将/dict/string对象列为xml或yaml进行文本存储。

当读到对象并写回xml时,xml文件内容具有 所有的文件结构和内容都保存在W.R.T.。 元素开始/结束和文本内容。 通过xml注释、文档类型规范、外部 如果输入中存在实体定义,则将放弃实体定义。外部系统 不支持实体(即包含外部文件) 并生成一个输入错误。

输入xml只是在语法上验证,而不是验证 作为底层后端的任何DTD或模式规范 是核心xml.sax模块。

文档上唯一的可选破坏性转换 内容是读取时的条带空间选项(分别为漂亮选项 在书写时)会影响非叶文本内容(剥离 前导和尾随空格)。

XML命名空间被忽略,因为没有实际的架构验证, 因此,元素、属性名和名称空间uri属性 按原样传递和保留。

注意,有一些模块几乎相同 功能,但没有一个提供所有功能:

  • 简单的普通对象(dict、list、strings)转储到XML或从XML重新加载
  • 保存半结构化XML文档(标记重复, 混合文本和标记)输入时
  • 通过yaml桥管理可编辑表单

用法

为了将xml文件转换为yaml表示,例如 测试/example-1.xml文件:

<example><doc>This is an example for xmlobj documentation. </doc><contentversion="beta"><kind>document</kind><class>example</class><structured/><elements><item>Elt 1</item><doc>Elt 2</doc><item>Elt 3</item><doc>Elt 4</doc></elements></content></example>

执行以下python代码:

importxmlplain# Read to plain objectwithopen("tests/example-1.xml")asinf:root=xmlplain.xml_to_obj(inf,strip_space=True,fold_dict=True)# Output plain YAMLwithopen("example-1.yml","w")asoutf:xmlplain.obj_to_yaml(root,outf)

这将在example-1.yml中输出yaml表示

example:doc:'Thisisanexampleforxmlobjdocumentation.'content:'@version':betakind:documentclass:examplestructured:''elements:-item:Elt 1-doc:Elt 2-item:Elt 3-doc:Elt 4

然后可以读取发出的yaml表示并生成 再次显示一个xml输出,其中:

importxmlplain# Read the YAML filewithopen("example-1.yml")asinf:root=xmlplain.obj_from_yaml(inf)# Output back XMLwithopen("example-1.new.xml","w")asoutf:xmlplain.xml_from_obj(root,outf,pretty=True)

这将输出回以下XML(可能有 压痕和/或短空元素差异 原件:

<?xml version="1.0" encoding="UTF-8"?><example><doc>This is an example for xmlobj documentation. </doc><contentversion="beta"><kind>document</kind><class>example</class><structured></structured><elements><item>Elt 1</item><doc>Elt 2</doc><item>Elt 3</item><doc>Elt 4</doc></elements></content></example>

有关详细用法,请阅读api文档,其中包含:

pydoc xmlplain

或访问在线文档:https://guillon.github.io/xmlplan" rel="nofollow">https://guillon.github.io/xmlplan

安装

该模块与python 2.6/2.7和python 3.x兼容。

对于本地安装(安装到$home/.local)请执行:

pip install --user xmlplain

这将在您的用户环境中安装最新版本及其依赖项。

可选地在系统级安装:

sudo pip install xlmplain

来源

从以下版本下载此模块存档文件:https://github.com/guillon/xmlplan/releases" rel="nofollow">https://github.com/guillon/xmlplan/releases

或者克隆源git存储库,地址是:https://github.com/guillon/xmlplan" rel="nofollow">https://github.com/guillon/xmlplan

从源安装

使用以下命令安装第一个模块依赖项:

pip install --user setuptools PyYAML ordereddict

要么将xmlplan.py文件复制到某个地方,要么安装它 使用setup.py

对于用户本地安装(安装到$home/.local)请执行:

<example><doc>This is an example for xmlobj documentation. </doc><contentversion="beta"><kind>document</kind><class>example</class><structured/><elements><item>Elt 1</item><doc>Elt 2</doc><item>Elt 3</item><doc>Elt 4</doc></elements></content></example>
0

开发

此模块作为带有测试的源树的一部分交付,顺序如下 要运行测试,请为insta执行NCE:

<example><doc>This is an example for xmlobj documentation. </doc><contentversion="beta"><kind>document</kind><class>example</class><structured/><elements><item>Elt 1</item><doc>Elt 2</doc><item>Elt 3</item><doc>Elt 4</doc></elements></content></example>
1

安装了python coverage后,可以使用以下命令检查更改的覆盖率:

<example><doc>This is an example for xmlobj documentation. </doc><contentversion="beta"><kind>document</kind><class>example</class><structured/><elements><item>Elt 1</item><doc>Elt 2</doc><item>Elt 3</item><doc>Elt 4</doc></elements></content></example>
2

当检查目标通过和新添加的代码被覆盖时, 请向https://github.com/guillon/xmlplan" rel="nofollow">https://github.com/guillon/xmlplan提交请求

文档

文档是用sphinx生成的

<example><doc>This is an example for xmlobj documentation. </doc><contentversion="beta"><kind>document</kind><class>example</class><structured/><elements><item>Elt 1</item><doc>Elt 2</doc><item>Elt 3</item><doc>Elt 4</doc></elements></content></example>
3

在线文档的宿主位置是:https://guillon.github.io/xmlplan" rel="nofollow">https://guillon.github.io/xmlplan

释放

发布过程依赖于virtualenv工具python2和python3 正在发布主机上安装。

发布版本对python2和python3进行构建、测试和覆盖率检查 然后为pypi生成文档和可上传的存档。

在取消发布之前,请确保更新\u版本字符串 在xmlplan.py中并提交它(不检查版本 在发布目标中)。

然后按以下步骤准备释放:

<example><doc>This is an example for xmlobj documentation. </doc><contentversion="beta"><kind>document</kind><class>example</class><structured/><elements><item>Elt 1</item><doc>Elt 2</doc><item>Elt 3</item><doc>Elt 4</doc></elements></content></example>
4

当所有这些都在本地传递时,提交所有并推送到github 下一个/master分支以便运行travis检查。 例如,在继续之前验证travis的状态 从travis命令行使用:

<example><doc>This is an example for xmlobj documentation. </doc><contentversion="beta"><kind>document</kind><class>example</class><structured/><elements><item>Elt 1</item><doc>Elt 2</doc><item>Elt 3</item><doc>Elt 4</doc></elements></content></example>
5

一旦全部通过,并且重新执行了make-j16 release目标, 将文档上载到github,并使用以下命令将包上载到pypi:

<example><doc>This is an example for xmlobj documentation. </doc><contentversion="beta"><kind>document</kind><class>example</class><structured/><elements><item>Elt 1</item><doc>Elt 2</doc><item>Elt 3</item><doc>Elt 4</doc></elements></content></example>
6

此时,包的版本应该可以在https://pypi.org/project/xmlplan" rel="nofollow">https://pypi.org/project/xmlplan 文档更新于https://guillon.github.io/xmlplan" rel="nofollow">https://guillon.github.io/xmlplan

应该使用以下命令检查pypi上的正确安装:

<example><doc>This is an example for xmlobj documentation. </doc><contentversion="beta"><kind>document</kind><class>example</class><structured/><elements><item>Elt 1</item><doc>Elt 2</doc><item>Elt 3</item><doc>Elt 4</doc></elements></content></example>
7

它将重新启动版本检查,这次从pypi下载而不是使用 本地来源。

完成所有操作后,应使用以下命令手动更新github:

  • 应用与新版本匹配的标记vx.y.z并将其推送到github
  • 转到github并完成标签升级到一个发布版中,并至少上载 在github发行版中还启用了source archivexmlplan-x.y.x.tar.gz 在刚刚上传的pypi文件上:https://pypi.org/project/xmlplan/files
  • (可选)添加一些信息并发布版本

许可证

这是免费的无负担软件,已发布到公共域。

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

推荐PyPI第三方库


热门话题
java如何将字符串转换为自定义对象   java如何从socket方法获取数据?   Java中的soap读取回车和新行   java在单击时替换图像   java推荐的使用RXJava执行异步任务的方法   java MySql连接器JDBC驱动程序不支持连接池吗?   java将活动堆栈清理到顶部   java计数用户输入的数量   java从webservice下载大文件导致应用程序性能问题   JavaLocalDate。EPOCH不可用   java如何在使用Selenium等待一定时间后,在页面无法加载(get(url))时自动刷新页面   java Calendar setLenient方法不允许检查年份字段的健全性   java Eclipse和intelliJ 安卓 SDK问题   java为什么我可以在没有super关键字的情况下调用父方法?   java iText的PDF格式不好