Skip to main content

Yet Another XML parser with the power of event-based memory-safe mechanism.

Project description

Yet Another XML parser is a powerful event-based memory-efficient Python module. It analyses the XML stream node by node and builds subtrees only if it is really needed.

In case of record-oriented XML input (when some subtree structure is repeated many times), it processes the file in a sequential manner similar to that of SAX. However, conditions can be defined which trigger a DOM like processing where subtrees are created.

This method is also efficient on very large data (which do not fit into the memory) both in terms of storage and computational time complexity.

Dependencies

YAX uses Python 3.x and above. It doesn’t depend on any third party module. However, if you have lxml installed you can use it as back-end. (See the documentation about performance.)

Installation

  • Download as a zip archive, uncompress and use it.

  • pip3 install yax

  • (Soon…) Downolad the deb package and install it.

Usage

A simple example which prints all the elements with tagname “a” and containing “href” attribute:

import yax

yr = yax.YAXReader(open("file.xml"))
yr.find("a", {"href": True}).calls(
    lambda e, i: print(yax.element_to_string(e, with_tail=False))  # with_tail only whith lxml!
)
yr.start()

A bit more complex example which filters a gpx record. It prints the elevation values of the trackpoints in a specified area:

import yax

yr = yax.YAXReader(open("route.gpx"))
yr.find("trkpt", {"lat": lambda v: 47 < float(v) < 48,
                  "lon": lambda v: 16 < float(v) < 17},
        keep_children="ele"
        ).calls(lambda e, i: print(e.find("ele").text))
yr.start()

This example shows that it would be erease all unneccessary children from the subtree to save memory but in this case we need the child called “ele”. For more example or the complete reference see the documentation.

See also

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

YAX-1.2.0.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

YAX-1.2.0-py3-none-any.whl (32.4 kB view details)

Uploaded Python 3

File details

Details for the file YAX-1.2.0.tar.gz.

File metadata

  • Download URL: YAX-1.2.0.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for YAX-1.2.0.tar.gz
Algorithm Hash digest
SHA256 76ee620d1b3a0a898e66c8b7e432a14d61db853b2640aa5717a38a50b2305db4
MD5 7231c32d4ead2eb9fcca0e30653af284
BLAKE2b-256 e2e436d56a0d10ff6ddc0e1d8bd95e4406be65ff6687bcb98ac35fd7a23e885a

See more details on using hashes here.

File details

Details for the file YAX-1.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for YAX-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ad4c8a706585dd7bdae3dfb0d451268ffd0e3b95b7035caa181c6fcd314ebcec
MD5 b1c2fa47a510640e434231a64c3c421f
BLAKE2b-256 61da709a36411981d0d5cade5671fb5e7dae6f4df001fbb9e7a98c3c9ea32393

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