Python PYXB Ошибка "UnboundElementError" при создании xml - PullRequest
0 голосов
/ 18 апреля 2020

Я обработал схему 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>
...