Naive XML Bindings for python¶
xsData is a complete XML data binding library for python allowing developers to access and use XML documents as simple objects rather than using DOM.
It ships with a code generator for XML Schema definitions and WSDL 1.1 with SOAP 1.1 bindings. It produces simple dataclasses with type hints in order to reduce the learning curve for users that have to write the binding models manually.
The included xml parser and serializer are highly optimized and adaptable with handlers based on native python and lxml. The parser configuration offers the ability to skip unknown properties and to process xinclude statements.
xsData is constantly tested against the W3C XML Schema 1.1 test suite.
Generate data models for XML Schema 1.0 and 1.1 definitions.
Generate data models for WSDL 1.1 and SOAP 1.1 bindings.
Support qualified elements/attributes, enumerations and inner classes.
Preserve embedded documentation and references.
Data binding for XML and JSON documents.
Pluggable code writer that supports python dataclasses and PlantUML class diagrams.
Changelog: 21.2 (2021-02-02)¶
Added class name context for user naming schemes #348
Added mixed pascal naming scheme #348
Added access to element/attribute name generators #381
Added XmlHexBinary/XmlBase64Binary builtin data types #387
Added support for xs:anyType root elements #399
Updated JSON binding modules to use the fields local name #389
Updated parsers accuracy for Union types
Updated dependency resolution accuracy
Update base classes generation strategies
Updated builtin data types with helper constructors/methods
Fixed inner class names conflicts #375
Fixed issue not generating fields derived from xs:alternative elements #393
Fixed duplicate root class name regression from v20.12
Fixed issue adding unused lib imports
Fixed issue adding unused name properties to choice elements
The W3C XML Schema offers so much flexibility and abstraction layers and grammatical rules to support practically any xml document definition.
Integration teams and clients don’t care about any of that, take out abstraction and flexibility and you are left with lean named data structures with typed attributes and a namespace for humans to read!