Я обработал схему xsd с PYXB и сгенерировал некоторые Python классы, но теперь я не знаю, как записать информацию в мои xml узлы: я получаю ошибку:
pyxb.exceptions_.UnboundElementError: Instance of type Wystawiajacy has no bound element for start tag
I Я пытаюсь записать некоторые данные с помощью метода, упомянутого в другом потоке об использовании PYXB, но всегда возникают ошибки, я определенно упускаю что-то важное.
Мой код для записи данных выглядит следующим образом:
someData=toXml.Wystawiajacy()
someData.nazwa="John"
with open('output.xml', 'w') as file:
file.write(someData.toxml("utf-8"))
Вот моя схема:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="dokument" type="typdokumentu" />
<xsd:element name="komentarz" type="xsd:string" />
<xsd:complexType name="typdokumentu">
<xsd:sequence>
<xsd:element name="Organ_wystawiajacy" type="Wystawiajacy" />
<xsd:element name="osoba_odbierajaca" type="Odbierajacy" />
<xsd:element name="badania" type="Badania" />
</xsd:sequence>
<xsd:attribute name="nr_dokumentu" type="nr_dokumentu_type" />
<xsd:attribute name="data_odbioru" type="xsd:date" />
</xsd:complexType>
<xsd:complexType name="Wystawiajacy">
<xsd:sequence>
<xsd:element name="nazwa" type="xsd:string" />
<xsd:element name="ulica" type="xsd:string" />
<xsd:element name="numer_lokalu" type="xsd:string" />
<xsd:element name="kod_pocztowy" type="kod_pocztowy_type" />
<xsd:element name="miasto" type="xsd:string" />
<xsd:element name="wojewodztwo" type="wojewodztwo_type" minOccurs="0" />
<xsd:element name="telefon" type="telefon_type" />
<xsd:element name="strona_internetowa" type="xsd:string" />
<xsd:element name="email" type="xsd:string" />
<xsd:element name="nazwa_banku" type="xsd:string" />
<xsd:element name="numer_konta" type="nrkonta_type" />
<xsd:element name="nip" type="nip_type" />
<xsd:element name="regon" type="regon_type" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Odbierajacy">
<xsd:sequence>
<xsd:element name="imie" type="xsd:string" />
<xsd:element name="nazwysko" type="xsd:string" />
<xsd:element name="numer_dowodu" type="nrdowodu_type" />
<xsd:element name="telefon" type="telefon_type" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Badania">
<xsd:sequence>
<xsd:element name="badania" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="numer_ref_badania" type="kod_badania_type" />
<xsd:element name="nazwa_badania" type="nazwa_badania_type" />
<xsd:element name="lekarz_wykonujacy" type="xsd:string" />
<xsd:element name="data_badania" type="xsd:date" />
<xsd:element name="cena_badania" type="cena_badania_type" minOccurs="0" maxOccurs="1" />
<xsd:element ref="komentarz" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="nrkonta_type">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{26}" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="nrdowodu_type">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[A-Z]{3}\d{6}" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="telefon_type">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{9}" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="nip_type">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{3}-\d{2}-\d{2}-\d{3}" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="regon_type">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{9}" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="kod_pocztowy_type">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{2}-\d{3}" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="cena_badania_type">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0" />
<xsd:maxInclusive value="10000" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="nazwa_badania_type">
<xsd:restriction base="xsd:string">
<xsd:minLength value="2" />
<xsd:maxLength value="50" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="kod_badania_type">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[A-Z]{3}-\d{3}" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="nr_dokumentu_type">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{6}/20\d{2}" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="wojewodztwo_type">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="dolnoslaskie" />
<xsd:enumeration value="kujawsko-pomorskie" />
<xsd:enumeration value="lubelskie" />
<xsd:enumeration value="lubuskie" />
<xsd:enumeration value="lodzkie" />
<xsd:enumeration value="malopolskie" />
<xsd:enumeration value="mazowieckie" />
<xsd:enumeration value="opolskie" />
<xsd:enumeration value="podkarpackie" />
<xsd:enumeration value="podlaskie" />
<xsd:enumeration value="pomorskie" />
<xsd:enumeration value="slaskie" />
<xsd:enumeration value="swietokrzyskie" />
<xsd:enumeration value="warminsko-mazurskie" />
<xsd:enumeration value="wielkopolskie" />
<xsd:enumeration value="zachodniopomorskie" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>