pydantic-xml extension#
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.
Features#
pydantic v1 / v2 support
flexable attributes, elements and text binding
python collection types support (
Dict
,TypedDict
,List
,Set
,Tuple
, …)Union
type supportpydantic generic models support
pydantic computed fields support
lxml xml parser support
xml.etree.ElementTree
standard library xml parser support
What is not supported?#
Getting started#
The following model fields binding:
class Product(BaseXmlModel):
status: Literal['running', 'development'] = attr() # extracted from the 'status' attribute
launched: Optional[int] = attr(default=None) # 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', default=[]) # extracted from the 'Company' element's children
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>
See documentation for more details.