Skip to main content

xmlobj is simple utility to map xml file to python object

Project description

Description

xmlobj is simple utility to map xml file to python object

xmlobj also allows you to add functionality to mapped object by adding mixin class

A Simple Example

from pathlib import Path

from PIL import Image, ImageDraw

from xmlobj.xmlmapping import get_xml_obj


class DrawBoxesMixin:
    def draw_box(self, image) -> Image.Image:
        p1 = (self.object.bndbox.xmin, self.object.bndbox.ymin)
        p2 = (self.object.bndbox.xmax, self.object.bndbox.ymax)
        img_draw = ImageDraw.Draw(image)
        img_draw.text(p1, self.object.name, align="left")
        img_draw.rectangle([p1, p2])
        return image


if __name__ == "__main__":
    pascal_annotation = Path("samples/000027.xml")
    img_file = "samples/000027.jpg"
    img = Image.open(img_file)
    obj = get_xml_obj(pascal_annotation, mixin_cls=DrawBoxesMixin)
    rendered_img = obj.draw_box(img.copy())
    rendered_img.show()

Limitations

  • Tag lowercase
    Original:
  <CD>
    <TITLE>Empire Burlesque</TITLE>
    <ARTIST>Bob Dylan</ARTIST>
    <COUNTRY>USA</COUNTRY>
  </CD>

Output:

<cd>
    <TITLE>Empire Burlesque</TITLE>
    <ARTIST>Bob Dylan</ARTIST>
    <COUNTRY>USA</COUNTRY>
</cd>
  • Symbol '@' in tags becomes separate attribute Original:
 <book id="bk101">
        <author>Gambardella, Matthew</author>
        <title>XML Developer's Guide</title>
        <genre>Computer</genre>
        <price>44.95</price>
        <publish_date>2000-10-01</publish_date>
        <description>An in-depth look at creating applications
            with XML.
        </description>
    </book>

Output:

<book>
    <id>bk101</id>
    <author>Gambardella, Matthew</author>
    <title>XML Developer's Guide</title>
    <genre>Computer</genre>
    <price>44.95</price>
    <publish_date>2000-10-01</publish_date>
    <description>An in-depth look at creating applications
        with XML.</description>
</book>

Installation

pip install xmlobj

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

xmlobj-1.1.0.tar.gz (4.0 kB view details)

Uploaded Source

Built Distribution

xmlobj-1.1.0-py3-none-any.whl (4.0 kB view details)

Uploaded Python 3

File details

Details for the file xmlobj-1.1.0.tar.gz.

File metadata

  • Download URL: xmlobj-1.1.0.tar.gz
  • Upload date:
  • Size: 4.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.17

File hashes

Hashes for xmlobj-1.1.0.tar.gz
Algorithm Hash digest
SHA256 19dce87b338d4681a07061cb45d2260b9ea04f0a8e3404c3d871a6e3b2daacb2
MD5 15523ccd44394e98d2f4d148f97636f0
BLAKE2b-256 704d5bd729fa3158eb267704fd8cdb1aca67843afb1bac3b752f91525fc63b34

See more details on using hashes here.

File details

Details for the file xmlobj-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: xmlobj-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 4.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.17

File hashes

Hashes for xmlobj-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6c8d3e0905e18514702141f569391e88538857c98d3efc5a127055c54e47d417
MD5 680a4b5d309d0f624d016c67a0029e6f
BLAKE2b-256 e2a0e7b94f3eff188aea750436068ce0a1c143788a042710254de689a5a9da05

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