pydantic-xml
pydantic-xml copied to clipboard
Error parsing when fields unordered
Code:
from typing import Optional
from pydantic_xml import element, BaseXmlModel
from lxml.etree import XML, Element
class Contact(BaseXmlModel, tag="Contact"):
Id: Optional[str] = element(default=None, max_length=15)
IsActive: bool = element()
contact_data_1 = """<Contact>
<Id>12786799082</Id>
<IsActive>true</IsActive>
</Contact>"""
contact_data_2 = """<Contact>
<IsActive>true</IsActive>
<Id>12786799082</Id>
</Contact>"""
for raw_xml in (contact_data_1, contact_data_2):
contact_element: Element = XML(raw_xml)
contact = Contact.from_xml_tree(contact_element)
print(contact)
Output:
Id='12786799082' IsActive=True
Id=None IsActive=True
I'm use pydantic-xml[lxml]
This might be useful for you. https://pydantic-xml.readthedocs.io/en/latest/pages/data-binding/elements.html#unordered
All you need to do is add search_mode='unordered' to your class.