8000 GitHub - ElectricBlueTrading/xsdata: Naive XML Bindings for python
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

ElectricBlueTrading/xsdata

 
 

Repository files navigation

https://github.com/tefra/xsdata/raw/master/docs/_static/logo.png

Naive XML Bindings for python

https://readthedocs.org/projects/xsdata/badge https://www.codefactor.io/repository/github/tefra/xsdata/badge

xsData is a complete data binding library for python allowing developers to access and use XML and JSON documents 8000 as simple objects rather than using DOM.

It ships with a code generator for XML schemas, WSDL definitions, XML & JSON documents. It produces simple dataclasses with type hints and simple binding metadata.

The included XML and JSON parser/serializer are highly optimized and adaptable, with multiple handlers and configuration properties.

xsData is constantly tested against the W3C XML Schema 1.1 test suite.

Getting started

$ # Install all dependencies
$ pip install xsdata[cli,lxml,soap]
$ # Generate models
$ xsdata tests/fixtures/primer/order.xsd --package tests.fixtures.primer
>>> # Parse XML
    >>> from pathlib import Path
    >>> from tests.fixtures.primer import PurchaseOrder
    >>> from xsdata.formats.dataclass.parsers import XmlParser
    >>>
    >>> xml_string = Path("tests/fixtures/primer/sample.xml").read_text()
    >>> parser = XmlParser()
    >>> order = parser.from_string(xml_string, PurchaseOrder)
    >>> order.bill_to
    Usaddress(name='Robert Smith', street='8 Oak Avenue', city='Old Town', state='PA', zip=Decimal('95819'), country='US')


Check the
>>> from pathlib import Path
>>> from tests.fixtures.primer import PurchaseOrder
>>> from xsdata.formats.dataclass.parsers import XmlParser
>>>
>>> xml_string = Path("tests/fixtures/primer/order.xml").read_text()
>>> parser = XmlParser()
>>> order = parser.from_string(xml_string, PurchaseOrder)
>>> order.bill_to
Usaddress(name='Robert Smith', street='8 Oak Avenue', city='Old Town', state='PA', zip=Decimal('95819'), country='US')

Check the documentation for more ✨✨✨

Features

  • Generate code from:
    • XML Schemas 1.0 & 1.1
    • WSDL 1.1 definitions with SOAP 1.1 bindings
    • Directly from XML and JSON Documents
    • Extensive configuration to customize output
    • Pluggable code writer for custom output formats
  • Default Output:
    • Pure python dataclasses with metadata
    • 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
    • Handlers and Writers based on lxml and native xml python
    • Support wildcard elements and attributes
    • Support xinclude statements and unknown properties
    • Customize behaviour through config

Changelog: 21.5 (2021-05-07)

  • Added output structure style single-package #469
  • Added support for marshalling array of objects for json #448
  • Added support to generate code from raw json documents #445
  • Added docstring style Blank to avoid generating them #460
  • Added validations for non supported type hints
  • Added support for python 3.10
  • Generate package __all__ lists #459
  • Generate factory for xs:list enumeration default values #471
  • Avoid generating prohibited elements with maxOccurs==0 #478
  • Avoid generating identical overriding fields #466
  • Fixed flattening base classes if they are also subclasses #473
  • Fixed unchecked class name conflict resolution #457
  • Refactored context components to improve binding performance #476

Packages

No packages published

Languages

  • Python 99.5%
  • Jinja 0.5%
0