Python将YAML“转换”为XML

Python将YAML“转换”为XML,第1张

概述1.背景 我们有一个依赖于几个XML配置文件的应用程序. XML文件定义诸如连接设置,轮询频率,多个用户帐户(使用XSD嵌套类型/序列)等内容. 我有这些XML文件的XSD架构.摘录如下: <?xml version="1.0" encoding="ISO-8859-1"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:e 1.背景

我们有一个依赖于几个XML配置文件的应用程序. XML文件定义诸如连接设置,轮询频率,多个用户帐户(使用XSD嵌套类型/序列)等内容.

我有这些XML文件的XSD架构.摘录如下:

<?xml version="1.0" enCoding="ISO-8859-1"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="FooExch"  type="CConfigFooType"/><xs:complexType name="CConfigFooType">  <xs:sequence>    <xs:element name="_appID" type="xs:string"/>    ...    <xs:element name="_logins" type="FoologinsType" maxOccurs="unbounded"/>    <xs:element name="_passwords" type="FooPasswordType" maxOccurs="unbounded"/>    ...  </xs:sequence></xs:complexType><xs:complexType name="FoologinsType">  <xs:sequence>    <xs:element name="_name" type="xs:string"/>    <xs:element name="_adapterID" type="xs:int"/>    <xs:element name="_Foologins" type="FooAccountType" maxOccurs="unbounded"/>  </xs:sequence></xs:complexType><xs:complexType name="FooAccountType">  <xs:sequence>    <xs:element name="_FooAccount" type="xs:string"/>    <xs:element name="_mktFeed" type="xs:int"/>  </xs:sequence></xs:complexType><xs:complexType name="FooPasswordType">  <xs:sequence>    <xs:element name="_name" type="xs:string"/>    <xs:element name="_password" type="xs:string"/>  </xs:sequence></xs:complexType></xs:schema>

2.目标

我们的目标是让用户更容易调整或添加设置.

我想提供一个带有YAML文件的脚本,并根据XSD输出一个XML配置(缺省值的缺省回退,可能在default.yaml文件中.).

我们还需要能够将YAML“附加”到XML中 – 例如,用户可以拥有一个仅定义其用户帐户的YAML,我们将其导入到现有XML中的现有用户帐户列表中文件.

3.方法

到目前为止,我正在使用GenerateDS(http://www.rexx.com/~dkuhlman/generateDS.HTML)从XSD生成Python包装器.

使用它,我可以创建一个表示XML模式的Python对象,然后将它们导出到XML.

现在的问题是如何从YAML转到XML?

理想情况下,我想要一个遍历每个值的泛型循环,并将其添加到Python表示中.

我最初的想法是使用getattr(config_wrapper,“yaml_name”)= yaml_value并迭代YAML中的每个值,然后捕获属性错误,以查找XSD中没有的任何内容.

我的第一个问题 – 这种方法有什么问题,或者是否有更多Pythonic /更清洁的方法呢?是否有更聪明的方法来解决这个问题?

我的第二个问题是 – 对于XSD的上述部分,我们需要使用用户名/密码进行嵌套登录.我知道PyYAML提供了嵌套集合,但是我仍然不太确定它如何与GenerateDS相关联,或者我如何使它具有通用性以使其可靠工作.

干杯,
胜利者

解决方法 我会避开XSD,听起来像很多官僚机构,收益不大.

>创建与XML文件具有相同层次结构的YAML文件.>使用pyyaml加载文件>循环结果,在elementtree中创建等效树.>将树写入XML文件>将XML发送到系统,当它抱怨时,修复YAML并返回步骤2.

总结

以上是内存溢出为你收集整理的Python将YAML“转换”为XML全部内容,希望文章能够帮你解决Python将YAML“转换”为XML所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1196458.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存