Skip to main content

XML Generator

Comprehensive XML generator for Python

Table of Contents

Installation

pip install xml-generator-seobaeksol

Usage

Import

from xml_generator.types import XmlNode

Comprehensive parsing

Parse Comprehensive format into an XmlNode object.

node = XmlNode.parse(
    {
        "name": "node",
        "attributes": {"attr1": "value1", "attr2": "value2"},
        "body": [
            {"name": "child1", "attributes": {"attr1": "value1"}},
            {"name": "child2", "attributes": {"attr2": "value2"}},
        ],
    }
)

Create a XmlNode with a query

node = XmlNode.from_query('node@attr1="value1"@attr2="value2"')

Create a XmlNode with a extended query

extend_query = {
            "root": [
                "NoValueNode",
                {
                    "SHORT-NAME": "node",
                },
                {
                    "ELEMENTS@type=string": [
                        "element@hint=id",
                        "element@unit=m",
                        {"element@unit=m@min=0@max=100@init=50": "100"},
                    ],
                },
            ]
        }

Searching a specific node

Return the first XmlNode with the given query. Query can be a name with attributes.

parent = node.find("node")
child1 = node.find("child1@attr1")
child2 = node.find("child2")

Serialization

Using the to_xml() function that return the XmlNode as an XML string.

with open('sample.xml', 'w', encoding='utf-8') as f:
    f.write(node.to_xml())

Using the to_extend_query() function that return the extended query object as an XML string.

extended_query_obj = root.to_extended_query()

Deserialization

Use XmlParser class for reading a xml file that return XmlNode by close() method. It is sub-class of xml.etree.ElementTree.XMLParser built-in python class.

from xml_generator.types import XmlParser

parser = XmlParser()

with open(
    file="xml_generator/tests/samples/complex.xml", mode="r", encoding="utf-8"
) as f:
    original_xml = f.read()
    parser.feed(original_xml)
root = parser.close()

xml_string = root.to_xml(
    declaration=True, declaration_tag='<?xml version="1.0" encoding="UTF-8"?>\n'
)

Contributing

Coming soon.

Testing

python -m unittest discover -s xml_generator/tests -p "test*.py"

Building

python .\setup.py sdist bdist_wheel

Deployment

twine upload dist/*

License

License :: OSI Approved :: MIT License

Release files for xml-generator-seobaeksol 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for xml-generator-seobaeksol 0.5.0
File Size Uploaded
xml-generator-seobaeksol-0.5.0.tar.gz 6.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for xml-generator-seobaeksol 0.5.0
File Interpreter ABI Platform
xml_generator_seobaeksol-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 13.3 kB

Release files / xml-generator-seobaeksol-0.5.0.tar.gz

Download URL xml-generator-seobaeksol-0.5.0.tar.gz
Size 6.4 kB
Tags Source
SHA-256 checksum
How to use checksums
ad980d6b758548518cc528870985aedad4287b7ee4247065040f3c1ac24adc21
BLAKE2b-256 checksum
How to use checksums
e6271318e0ccd9bdf211ccc46f8370e7fe1f6a331790b4eb10ebade1a981c72a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.12.0

Release files / xml_generator_seobaeksol-0.5.0-py3-none-any.whl

Download URL xml_generator_seobaeksol-0.5.0-py3-none-any.whl
Size 6.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1755ce8e6489697c79d4c0126f2096ccbe47378e098e0857e78babea304968af
BLAKE2b-256 checksum
How to use checksums
4a35d142a63a830afb1f72ccdd193f84e0d7d01a0a7ac7be6612349336b54abe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.12.0

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.7

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

1 release file

0.3.0

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page