pydantic-xml is a pydantic extension providing model fields xml binding
and xml serialization / deserialization.
It is closely integrated with
pydantic which means it supports most of its features.
flexable attributes, elements and text binding
python collection types support (
pydantic generic models support
lxml xml parser support
xml.etree.ElementTreestandard library xml parser support
What is not supported?#
The following model fields binding:
class Product(BaseXmlModel): status: Literal['running', 'development'] = attr() # extracted from the 'status' attribute launched: Optional[int] = attr() # extracted from the 'launched' attribute title: str # extracted from the element text class Company(BaseXmlModel): trade_name: str = attr(name='trade-name') # extracted from the 'trade-name' attribute website: HttpUrl = element() # extracted from the 'website' element text products: List[Product] = element(tag='product') # extracted from the 'website' element
defines the XML document:
<Company trade-name="SpaceX"> <website>https://www.spacex.com</website> <product status="running" launched="2013">Several launch vehicles</product> <product status="running" launched="2019">Starlink</product> <product status="development">Starship</product> </Company>
Check documentation for more information.