Skip to main content

Comprehensive XML generator for Python

Project description

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

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

xml-generator-seobaeksol-0.4.0.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xml_generator_seobaeksol-0.4.0-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file xml-generator-seobaeksol-0.4.0.tar.gz.

File metadata

File hashes

Hashes for xml-generator-seobaeksol-0.4.0.tar.gz
Algorithm Hash digest
SHA256 9676d4e90718c2696509b318130804442b4b13a988ec7b8a3574f559c4f8e371
MD5 a71f0b50622b9f5628c304de0f31c985
BLAKE2b-256 d8c46c9817f3351c5f1e5585a1979607223f2824b5db2bf5dcb7d37064f88489

See more details on using hashes here.

File details

Details for the file xml_generator_seobaeksol-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for xml_generator_seobaeksol-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6bfa18e24d1ab55031a7c96905eaad82dd27fcb4126ca13f52be97891e6e09e8
MD5 600d8f3206c42e074caefa24b2bb7058
BLAKE2b-256 a3667b1d9124a97b65a38f7815a004445a0816c90aa48a1087aa358f31241834

See more details on using hashes here.

Supported by

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