XSD разбор документов и элементов

У меня есть xsd для которого я использовал pyxb генерировать объектные классы для. Пока все работает, я могу принять документы, обработка ошибок и т. Д. Работает нормально. Мой единственный вопрос заключается в следующем, у меня есть следующее в моем xsd:

<xs:element name="users">
  <xs:complexType>
    <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="user" />
    </xs:sequence>
  </xs:complexType>
</xs:element>

у меня есть user сложный тип, определенный в другом месте. Иногда я хочу взять user из основного документа XML, и я хочу создать из него привязки класса Python... но я не могу. pyxb позволяет только создавать из целого документа (используя CreateFromDocument функция). Есть ли в любом случае, чтобы получить только этот user элемент?

Я прочитал следующее:

https://developer.yahoo.com/python/python-xml.html

http://pyxb.sourceforge.net/api/pyxb.binding.basis.element-class.html

http://pyxb.sourceforge.net/userref_pyxbgen.html

2 ответа

Решение

CreateFromDocument() создаст привязку для любого фрагмента XML, который является элементом верхнего уровня в схеме. Таким образом, вы должны были сделать:

instance = user_xsd.CreateFromDocument(string)

не пройдя через инстанс сначала. Есть много примеров, которые делают именно это в каталоге тестов.

Так что ответ был спрятан в документах.

http://pyxb.sourceforge.net/PyXB-1.2.2/examples.html

скажи, что у тебя есть user XML-документ. Ты можешь сделать:

from xml.dom import minidom
dom = minidom.parseString(string)

# import the xml file you get from pyxbgen
import user_xsd
user_xsd.CreateFromDOM(dom.documentElement)
Другие вопросы по тегам