PyXB的端到端示例.从XSD架构到XML文档

Ame*_*ina 14 python xml xsd pyxb

我很难开始使用PyXB.

假设我有一个XSD文件(XML模式).我想要:

  1. 使用PyXB根据模式定义Python对象.
  2. 将这些对象保存为磁盘,作为满足模式的XML文件.

我怎么能用PyXB做到这一点?下面是一个编码地址的XSD文件(来自维基百科)的简单示例,但我很难开始使用.

<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Address">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="FullName" type="xs:string" />
        <xs:element name="House" type="xs:string" />
        <xs:element name="Street" type="xs:string" />
        <xs:element name="Town" type="xs:string" />
        <xs:element name="County" type="xs:string" minOccurs="0" />
        <xs:element name="PostCode" type="xs:string" />
        <xs:element name="Country" minOccurs="0">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="IN" />
              <xs:enumeration value="DE" />
              <xs:enumeration value="ES" />
              <xs:enumeration value="UK" />
              <xs:enumeration value="US" />
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)

更新

一旦我跑了

pyxbgen -u example.xsd -m example
Run Code Online (Sandbox Code Playgroud)

我得到的example.py有以下课程:

example.Address             example.STD_ANON
example.CTD_ANON            example.StringIO
example.CreateFromDOM       example.pyxb
example.CreateFromDocument  example.sys
example.Namespace           
Run Code Online (Sandbox Code Playgroud)

我想我明白了什么CreateFromDocument- 它可能是读取XML并创建相应的python对象 - 但是我用哪个类来创建一个新对象然后将其保存到XML

rec*_*que 17

一个简单的谷歌搜索带来了这个:http://pyxb.sourceforge.net/userref_pyxbgen.html#pyxbgen

特别是说:

使用以下命令将其转换为Python:

pyxbgen -u po1.xsd -m po1
Run Code Online (Sandbox Code Playgroud)

-u参数标识描述命名空间内容的模式文档.该参数可以是本地系统上文件的路径,也可以是网络可访问位置的URL,如 http://www.weather.gov/forecasts/xml/DWMLgen/schema/DWML.xsd.-m参数指定Python模块使用的名称,该模块包含在前一个模式中为名称空间生成的绑定.运行此命令后,Python绑定将位于名为po1.py的文件中.

编辑更新后:

现在您已经生成了Address类和所有关联的帮助程序,请查看http://pyxb.sourceforge.net/userref_usebind.html以了解如何使用它们.对于您的具体问题,您希望学习"在Python代码中创建实例"一节.基本上,从您的应用程序数据生成XML,您只需:

import example
address = Address()
address.FullName = "Jo La Banane"
# fill other members of address
# ...
with open('myoutput.xml', 'w') as file
    f.write(address.toxml("utf-8"))
Run Code Online (Sandbox Code Playgroud)

现在由你好奇并阅读生成的代码,pyxb的doc,调用各种生成的方法和实验!