Я следовал инструкциям из this thread, и из этого XML:Невозможно привязать к классам pyxb с вложенными (анонимными) типами
<?xml version="1.0" encoding="UTF-8" ?>
<my_report>
<something>
<foo>
Yes
</foo>
</something>
<something_else>
<id>4</id>
<foo>Finally</foo>
<score>0.2</score>
</something_else>
</my_report>
Я создал следующую XSD схему с помощью this tool online.
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="my_report">
<xs:complexType>
<xs:sequence>
<xs:element name="something">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="foo"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="something_else">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:byte" name="id"/>
<xs:element type="xs:string" name="foo"/>
<xs:element type="xs:float" name="score"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Я тогда назвал pyxben -u my_schema.csd -m my_schema
в оболочке, а затем пытался использовать привязки строить объекты:
from my_schema import my_report
my_xml_report = my_report()
Это, кажется, работает до сих пор (я могу получить доступ к my_xml_report.something
). Однако, когда я пытаюсь заполнить вложенный элемент:
my_xml_report.something.foo = "No"
Я получаю ошибку 'NoneType'object has no atttribute 'foo'
.
The documentation говорит о anonymous types
, которые, как представляется, связано с моей проблемой, но я до сих пор не могу заставить его работать:
import pyxb
my_xml_report.something = pyxb.BIND('foo', "No")
Я получаю ошибку MixedContentError: invalid non-element content
Как я могу заполнить этот XML?