Skip to main content

PydanticXML is a Python library that provides a way to convert Pydantic models to XML and vice versa.

Project description

PydanticXML

PydanticXML is a Python library that provides a way to convert Pydantic models to XML and vice versa. It is built on top of the Pydantic library and extends it with XML-specific functionality.

Features

  • Convert Pydantic models to XML and vice versa
  • Support for XML attributes, elements, content, lists.
  • Compatible with most Pydantic features (e.g. default values, validators, Field etc.)
  • Very easy to use. Extends Pydantic's API with only a few methods.
  • Has no dependencies other than Pydantic
  • Have a good docs in the source code
  • Fully tested (100% coverage)

Installation

You can install PydanticXML with pip:

pip install pydantic-xmlmodel

Usage

To use PydanticXML, you need to import the XMLModel class from the pydanticxml module:

from pydantic_xmlmodel import XMLModel

Examples

Defining a Model

You can define a model by subclassing XMLModel and defining attributes with type annotations:

class AnimalCharacteristics(XMLModel):
    color: str = "black"
    weight: int = 10
    is_friendly: bool = True

Converting a Model to XML

You can convert a model to XML by calling the to_xml() method:

class Cat(XMLModel):
    animal_characteristics: AnimalCharacteristics
    name: str = "Kitty"

cat = Cat(animal_characteristics=AnimalCharacteristics())
print(cat.to_xml(indent=4))

This will output:

<?xml version="1.0" ?>
<cat name="Kitty">
    <animalcharacteristics color="black" weight="10" is_friendly="True"/>
</cat>

Converting XML to a Model

You can convert XML to a model by calling the from_xml() method:

xml = """<?xml version="1.0" ?>
<cat name="Kitty">
    <animalcharacteristics color="black" is_friendly="true" weight="10"/>
</cat>
"""
cat = Cat.from_xml(xml)
print(cat)

This will output:

animal_characteristics=AnimalCharacteristics(color='black', weight=10, is_friendly=True, xml_content=None) name='Kitty' xml_content='\n    '

(Note that the xml_content attribute is not part of the model. It is used to store the XML content, like this <element> xml_content <other_element /></element>)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydantic_xmlmodel-0.3.3.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

pydantic_xmlmodel-0.3.3-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file pydantic_xmlmodel-0.3.3.tar.gz.

File metadata

  • Download URL: pydantic_xmlmodel-0.3.3.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.0 CPython/3.11.4 Linux/6.3.11-200.fc38.x86_64

File hashes

Hashes for pydantic_xmlmodel-0.3.3.tar.gz
Algorithm Hash digest
SHA256 16ad4f988c27461197a95fe4cb475f96f0864be67543f0486f26099e44dc3e08
MD5 6776e4c3c201b7ea745506b86b63b72d
BLAKE2b-256 ff2d7a3d3b337e5cebd5b636d226f4e6211a0c69373abc8920f06b941bbb992d

See more details on using hashes here.

File details

Details for the file pydantic_xmlmodel-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: pydantic_xmlmodel-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.0 CPython/3.11.4 Linux/6.3.11-200.fc38.x86_64

File hashes

Hashes for pydantic_xmlmodel-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 f9ada67063fad0d1424cee1d1d05e63aa3d5e377e807979d8161fd8ef933fe50
MD5 7a72b7c6701db82bc1207f78c442c2b0
BLAKE2b-256 ab22356e8cf1491b5cceda14b803666e4caccc475e42c5138516e57b4754fd2e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page