16

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>

アップデート

走ったら

pyxbgen -u example.xsd -m example

example.py次のクラスを持つを取得します。

example.Address             example.STD_ANON
example.CTD_ANON            example.StringIO
example.CreateFromDOM       example.pyxb
example.CreateFromDocument  example.sys
example.Namespace           

CreateFromDocumentおそらくXMLを読み取り、対応するpythonオブジェクトを作成しますが、どのクラスを使用して新しいオブジェクトを作成し、それをXMLに保存しますか?

4

1 に答える 1

18

簡単な Google 検索でこれが得られます: http://pyxb.sourceforge.net/userref_pyxbgen.html#pyxbgen

特に、次のように述べている部分:

次のコマンドを使用して、これを Python に変換します。

pyxbgen -u po1.xsd -m po1

-u パラメータは、名前空間の内容を記述するスキーマ ドキュメントを識別します。パラメータは、ローカル システム上のファイルへのパス、または http://www.weather.gov/forecasts/xml/DWMLgen/schema/DWML.xsdのようなネットワーク アクセス可能な場所への URLです。-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"))

興味を持って、生成されるコード、pyxb のドキュメントを読み、生成されたさまざまなメソッドを呼び出して実験するのはあなた次第です!

于 2013-06-26T13:22:37.170 に答える