Modern XML & JSON Bindings for Python 3.12+
pyxsdata is a complete, modern data binding library for Python 3.12+ allowing developers to access and use XML and JSON documents as simple objects rather than using DOM.
The code generator supports XML schemas, DTD, WSDL definitions, XML & JSON documents. It produces simple dataclasses or Pydantic v2 models with type hints and binding metadata.
The included XML and JSON parser/serializer are highly optimized and adaptable, with multiple handlers and configuration properties.
About pyxsdata (Modern Fork of xsdata)
pyxsdata is a modernized successor and fork of
xsdata designed exclusively for Python 3.12+ and
actively maintained with modern tooling.
Key Enhancements over Legacy xsdata
- Unified Native Pydantic v2: Consolidates
xsdata-pydanticdirectly into the core library underpyxsdata.pydanticwith dedicated--output pydanticgeneration and drop-in parsers/serializers. - Python 3.12+ Architecture: Exclusively leverages PEP 695 generics
(
class Foo[T]: ...), type union syntax (X | Y), pattern matching, andkw_onlydataclasses. - Ultra-Fast C++ pugixml Support: First-class support for constant-memory
pull-parsing via pugixml (
pip install "pyxsdata[pugixml]"). - Modern Packaging & Tooling: Managed and built with Astral
uv, statically type checked with Astraltywith zero diagnostics, and formatted withruff. - Active & Responsive Maintenance: Regular dependency updates, modern CI packaging, and active community maintenance.
Getting started
$ # Install all dependencies including CLI, LXML, SOAP, and Pydantic
$ pip install "pyxsdata[cli,lxml,soap,pydantic]"
$ # Generate models
$ pyxsdata generate tests/fixtures/primer/order.xsd --package tests.fixtures.primer
>>> from tests.fixtures.primer import PurchaseOrder
>>> from pyxsdata.formats.dataclass.parsers import XmlParser
>>>
>>> parser = XmlParser()
>>> order = parser.parse("tests/fixtures/primer/sample.xml", PurchaseOrder)
>>> order.bill_to
Usaddress(name='Robert Smith', street='8 Oak Avenue', city='Old Town', state='PA', zip=Decimal('95819'), country='US')
Pydantic Support
Generate Pydantic v2 models directly with --output pydantic:
$ pyxsdata generate tests/fixtures/primer/order.xsd --output pydantic --package myapp.models
>>> from pyxsdata.pydantic.bindings import XmlParser
>>> parser = XmlParser()
>>> order = parser.from_string(xml_text, PurchaseOrder)
>>> order.model_dump()
Check the documentation for more ✨✨✨
Features
Code Generator
- XML Schemas 1.0 & 1.1
- WSDL 1.1 definitions with SOAP 1.1 bindings
- DTD external definitions
- Directly from XML and JSON Documents
- Extensive configuration to customize output
- Pluggable code writer for custom output formats (Standard Dataclasses, Pydantic v2)
Default Output
- Pure Python 3.12+ dataclasses or Pydantic models with metadata
- Modern type hints with support for forward references and unions
- Enumerations and inner classes
- Support namespace qualified elements and attributes
Data Binding
- XML and JSON parser, serializer
- PyCode serializer
- Handlers and Writers based on lxml and native xml python
- Support wildcard elements and attributes
- Support xinclude statements and unknown properties
- Native Pydantic v2 support (
pyxsdata.pydantic) - Fully type-checked with Astral
ty
Changelog: 0.0.0
- Modernized for Python 3.12+ minimum.
- Consolidated
xsdata-pydanticinto core library aspyxsdata.pydantic. - Replaced mypy with Astral's static type checker
ty. - Standardized CLI tool to
pyxsdata. - Documentation powered by Zensical.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyxsdata-1.0.0.tar.gz.
File metadata
- Download URL: pyxsdata-1.0.0.tar.gz
- Upload date:
- Size: 440.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6bd374611e98c8009f23bcf2463b0ccd78b12b22fc9743b60d28ddfcbf572e67
|
|
| MD5 |
c95460dd0f4daf334566be315635f910
|
|
| BLAKE2b-256 |
5ac911f25bec916d007839e48ff1cc350ef21e698bea779345f9a479ac2d90d7
|
File details
Details for the file pyxsdata-1.0.0-py3-none-any.whl.
File metadata
- Download URL: pyxsdata-1.0.0-py3-none-any.whl
- Upload date:
- Size: 245.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
51d5c2d12d514a981a87ca156e24a6123309c10eed9dba409dcfe78621447a50
|
|
| MD5 |
3df636076a6c2c4b30966fd0ba6de55d
|
|
| BLAKE2b-256 |
3ad3248a8c98f36bcabc0d25c79f1c1d146783066c760ecc4985ad4fd328dabf
|