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
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)