Ich habe eine Xsd-Datei und muss entsprechend ein XML erstellen.Python pyxb: Erstellen von XML mit komplexen eingebetteten Typ
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.1" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:simpleType name="edateTimeType">
<xs:restriction base="xs:dateTime">
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="eEurocents">
<xs:restriction base="xs:int">
<xs:maxExclusive value="1000000"/>
<xs:minExclusive value="-1000000"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="unixTimestampType">
<xs:restriction base="xs:nonNegativeInteger">
<xs:minInclusive value="1262304000"/>
<!-- after 1.1.2010-->
</xs:restriction>
</xs:simpleType>
<xs:complexType name="timeRangeType">
<xs:sequence>
<xs:element name="start" type="edateTimeType" minOccurs="1" maxOccurs="1"/>
<xs:element name="stop" type="edateTimeType" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:element name="apiobject">
<xs:complexType>
<xs:sequence>
<xs:element name="header" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="A" type="eEurocents" minOccurs="1" maxOccurs="1"/>
<xs:element name="B" type="eEurocents" minOccurs="0" maxOccurs="1"/>
<xs:element name="unixTimestamp" type="unixTimestampType" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:choice maxOccurs="1">
<xs:element name="response" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="TableType1" minOccurs="0" maxOccurs="5">
<xs:complexType>
<xs:sequence>
<xs:element name="teid" type="unixTimestampType"/>
<xs:element name="entry" type="eEurocents" maxOccurs="192"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="request" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="TableType1" minOccurs="0" maxOccurs="5">
<xs:complexType>
<xs:sequence>
<xs:element name="timestamp" type="unixTimestampType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Ich habe das mehrmals vor der Verwendung von python3 pyxb/pyxbgen und Importieren der Bindungen lib getan.
Jetzt habe ich das gleiche mit einer neuen Version der Xsd-Datei versucht. Das neue xsd hat in dem Apijekt zwei Arten von Objekten, Anfragen und Antworten. Der Typ TableType1 ist für Antwort und Anforderungen unterschiedlich definiert. Aber in der Binding-Bibliothek sind die inneren Typen der Anfragen und Antworten für mich nicht zugänglich.
Was ich tun möchte, ist eine XML-Zeichenfolge für ein Apiobject mit einer Antwort, die eine TableType1 enthält. Aber da ich nicht auf das TableType1-Objekt zugreifen kann, kann ich es weder auffüllen noch in die Antwort des apiobject einfügen.
Wie kann ich eine gültige Apiobject-Antwort mit TableType1 erstellen?
PS: Einige Xml-Editor sagt das Xsd ist gültig. Aber pyxb kann keine Beispiel-XML-Datei mit dem xsd Schema importieren ...
[dies] (http://stackoverflow.com/questions/17584287/unable-to-bind-to-pyxb-classes-mit-nested -anonymous-types? rq = 1) bietet eine Antwort, aber ich sehe nicht, wie dies meinen inneren komplexen Typ mit den richtigen Objekten füllen wird !? – Jochen