Efficient XML-to-dict conversion backed by Rust
Project description
quick-xmltodict
Efficient XML-to-dict conversion backed by Rust.
>>> from quick_xmltodict import parse
>>> xml = """
... <movies>
... <movie>
... <title>Her</title>
... <director>Spike Jonze</director>
... <year>2013</year>
... <genre>Science Fiction, Drama, Romance</genre>
... </movie>
... <movie>
... <title>Encanto</title>
... <director>Byron Howard, Jared Bush</director>
... <year>2021</year>
... <genre>Animation, Family, Fantasy</genre>
... </movie>
... </movies>
... """
>>> parse(xml)
{'movies': {'movie': [{'director': 'Spike Jonze',
'genre': 'Science Fiction, Drama, Romance',
'title': 'Her',
'year': '2013'},
{'director': 'Byron Howard, Jared Bush',
'genre': 'Animation, Family, Fantasy',
'title': 'Encanto',
'year': '2021'}]}}
Features
quick-xmltodict
is a Rust-backed XML-to-dict conversion package that is designed to be fast and efficient.
It has a single function, parse
, that takes an XML string and returns a Python dictionary.
You should be able to use this function as a drop-in replacement for the xmltodict.parse
function from the original xmltodict
package (used without any extra arguments).
Like xmltodict
, quick-xmltodict
follows this schema for converting XML to JSON.
quick-xmltodict
currently does not support namespace expansion, or the reverse operation (dict-to-XML conversion). For these features, use the original xmltodict
package.
Performance
quick-xmltodict
is currently about 2-5 times faster than xmltodict
.
There are performance improvements to be made, so this difference is expected to increase.
Contributing
PRs are very welcome! Please make sure to run the tests before submitting a PR.
Development
This project uses Poetry to manage the environment and Python dependencies. To install the development environment and run the test suite:
poetry install
poetry run maturin develop
poetry run pytest
Be sure to run poetry run maturin develop
after making changes to the Rust code.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for quick_xmltodict-0.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a87d1ee0a5a7b139b9ab571d4f12c33c42beaae0b62891c2a4dcbec356a18c75 |
|
MD5 | a8563670c7c10b1ca009c691432c6d92 |
|
BLAKE2b-256 | 784ace16b6ff85b90e3ce981f2cc893ea8be2f06bd87ae79d25c7ab5255966e6 |
Hashes for quick_xmltodict-0.1.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4bc0b08cec76c9cddf7271260fe9ee7a71334a7c6764c09698769461aca91d15 |
|
MD5 | eb109ace0a0b261a0bd47517d8603107 |
|
BLAKE2b-256 | 6c6b09838ccfb2c213b98ecef9d330bce348ced90ec31927890724477dc7c0e8 |
Hashes for quick_xmltodict-0.1.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e0564f96172b84853304303c181ec3d7bb3964e63d26e5e63e52d42179fd5c05 |
|
MD5 | 6155285b9539b4b9694cfc59dedfa651 |
|
BLAKE2b-256 | ea7ff2ba54e3e489f15fab252fba8a3a8490abaa0d9e86fd88e638fc9cfcd89c |
Hashes for quick_xmltodict-0.1.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3351e40d7f732bf1e005cbee77f645cf81c6fb3b690d265e74ccab0a9b15ad7c |
|
MD5 | 12b62e6bffb29c49246d4ddac7ac20fa |
|
BLAKE2b-256 | 8e16fe4f917743b526e90582ee7e5bfb1d5d71b05bb8b6294dbd306bdb432377 |
Hashes for quick_xmltodict-0.1.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 567afce3de2c6cf84e283babaf8664df2456522cc68fac1a8c18e68d5e005857 |
|
MD5 | 2dc4e99e9a5c27c53c9c50f343bf84fc |
|
BLAKE2b-256 | b9b0ce6fa43e8d2ec1b03ed193308148d06025243e047cc42bcd9db3fd42ed2f |
Hashes for quick_xmltodict-0.1.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d5c78954d960265afd7d1af2752475fa5a288d4f78904bb694684d5aea4acdcf |
|
MD5 | 667040580894da785994678b5a7e4cf1 |
|
BLAKE2b-256 | 3dc26b8156c29da0fdd7fa5a544ea7cf1c850a7eded7873a43bfd0965da2204f |
Hashes for quick_xmltodict-0.1.0-cp312-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3cf6002096b599a9fd3f18bdfe755a3ff602a49531a92c3e1bf543db5ddbdde9 |
|
MD5 | b4b39d46c38e98d97df9077386a90f7d |
|
BLAKE2b-256 | 80df94af5b14abdd58dc7725fe9d4c1922446113d46e33fa9fb848f96044d417 |
Hashes for quick_xmltodict-0.1.0-cp312-none-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 93fa30fc9303e49400a2e4c6d35389ceaa9d9b2ef95ea2ac99c6bb862175ec32 |
|
MD5 | 61574d1be9e016af02727698314155a5 |
|
BLAKE2b-256 | c4f18be18085a7b0c2fc8ec6bfd4b3918b75681e311ce741af361526a748dedc |
Hashes for quick_xmltodict-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 95cbff1721f764f844bdb1f58ee12e05538c8b3aa5cba510109a110c427be8a5 |
|
MD5 | aa633200d12e7b8ba726bdb329c7f5ca |
|
BLAKE2b-256 | 463a215c69516dbdeb35685265c5aee857f4888dffe8c8b9881fdc834cdcbd50 |
Hashes for quick_xmltodict-0.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bd51176190e2b64abfc99a206aaf3a807b385bf64878cff53420028ec6be27d5 |
|
MD5 | d0d9cf5ee97360c2338a5ec768500dac |
|
BLAKE2b-256 | ea0ed7d5ea33f704617dd476d7847d1630d8e50404fb9482313652c55a14072d |
Hashes for quick_xmltodict-0.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7d117993cd4ebaea019b002b02b10aeb4aecbe998513386dbfd272074bf77787 |
|
MD5 | 3ff26f7e706987c198e6a6979bee7029 |
|
BLAKE2b-256 | 0ac857bd7ca1f763f90bb7e8b63813f622fc6cb2d358f1d207727c52ca5fe514 |
Hashes for quick_xmltodict-0.1.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf9689f10d271cd0f12e766b159572853c43c5617bdbd33121718ed385161db3 |
|
MD5 | 94952b3a164fd60f6dc7837cba95eb24 |
|
BLAKE2b-256 | 7679e8f9354ac379838fc7f249d99455ee3b3b606de3598e6280b090a51276d1 |
Hashes for quick_xmltodict-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a2dae86677c9cb6fa85f830896fe19c3075a5010f24c55a1bf76663cbd32439e |
|
MD5 | db7c5328e28edb121eb25f5a83d02921 |
|
BLAKE2b-256 | e45152d48a4ac46ad2a5e2a4f03a9512798f51fb11ea0e7de90315efbb6f3eb9 |
Hashes for quick_xmltodict-0.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8f5bac6c0ba32a027747ebcb1cab1436d62edccae733b406021115c284ab5bec |
|
MD5 | 6f2ee5c592400b8f0708767456fe8ec4 |
|
BLAKE2b-256 | 7ba21b0d83a2fc9844ebbb7685dc338a014e060e0fb1da5c6fab5effe659cbd6 |
Hashes for quick_xmltodict-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7b2c3df07e7dc662a5f221ea3b2b867d32bae07d99bcc6fac5457fa2c41803c1 |
|
MD5 | 8a31f5862e5dcbf75ce18f422716ec9c |
|
BLAKE2b-256 | 8fcc15a837fbccca1f164e6d6016439068fe675760bd654719007810c1ee4bd1 |
Hashes for quick_xmltodict-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cbb60fe6d7380a6873e0e9da26ec31fb56071820c79418991d7fe04b20ffa2f6 |
|
MD5 | 2fdef55fee8899eaf0e5ea5e754763d8 |
|
BLAKE2b-256 | d188285ba5c3fa40be79a12cfd29020ed1f6d5b7dcc8994e6947e3e0647d6680 |
Hashes for quick_xmltodict-0.1.0-cp311-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8482e19f287c5b1c8c24b0d0b005a9b1542b1b7fad51a7769841beebe07ea600 |
|
MD5 | d2de3661e351bdeb3cff76179fd492cf |
|
BLAKE2b-256 | 961a59242730720da49dca12193b796d3c39dd134b48ebe49f9794024ac42e52 |
Hashes for quick_xmltodict-0.1.0-cp311-none-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 464ef276f208b8f4ecf079232857785f4a7f3e80bec164a237a60f24ee28a6cd |
|
MD5 | 3826052d69ef743003a747d16be8d80b |
|
BLAKE2b-256 | 7a89465e2b7fb536a769f58bbd2c95261ebeb12f48f292e66154d1a883613b5b |
Hashes for quick_xmltodict-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5eb0ad00757b50ffd37550a6e79a1f2641e36f4a616b6f8a093fd5191fd40b1d |
|
MD5 | 66f4af22a8fdde7cc44c1dd7458bd424 |
|
BLAKE2b-256 | b8cfe999eb15998f50fabf4c125e5ebeebf1607f378b60d414dfe7b3a5e2a456 |
Hashes for quick_xmltodict-0.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c1fa19a351a890f6615dcd8a2bb73e73a3b6a3f9fe38cd14f123af7795e5b4db |
|
MD5 | 438d3d212ca3dfef7c4be07a024fdc3b |
|
BLAKE2b-256 | 399f449b637160eb1a76eeef593b13e8898affcf15a4b8b5771473d9a48bf89b |
Hashes for quick_xmltodict-0.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3bc62cca4d7ab84af00d2e6054fc35e8b16b747ea72f4559b31ec08e38f8b6e2 |
|
MD5 | 2fe1fd7a197cc5533db1a1f72befa0e0 |
|
BLAKE2b-256 | f6134e2d4da9de2f39bb312aa0b842c7f25c98c69cb3db5db0d46c8aeb235890 |
Hashes for quick_xmltodict-0.1.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a8fc60fb24412948970b8492f8d8d23a8b4a7f0b4316f037159ed296af7563ef |
|
MD5 | 6bc01e21f9b47215365fc775d61559c2 |
|
BLAKE2b-256 | 096acc49a0a1384c93cc3979b6374238bea76021372129062a10419f65c0dc13 |
Hashes for quick_xmltodict-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a9afbc3c33bab1be2e7dfebea690f03e0626731e6a53e026e6141ead6886d4e6 |
|
MD5 | 5d45e59b4ed182848a015428673c59d1 |
|
BLAKE2b-256 | eea59b43944cd1fcfd95f6cb0233851fa8b5d1359fff3eefb868e9ddb0076c75 |
Hashes for quick_xmltodict-0.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 27ab321464d2bee2c0b7a0f4f3632e720677dfeea7eb0ff93c9c1f45c3a5e063 |
|
MD5 | 040fddddbae6b566abc775ca49de2d1c |
|
BLAKE2b-256 | ddf7e24d7a9d078c636f669021e69f2f61dfe2d29bdc98579f164522516e171b |
Hashes for quick_xmltodict-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 462afe7077b77a191c98c6d70e6f7254cea516b9a8023cc0071d953017cc8778 |
|
MD5 | 9d79cf0dbc9373756fadcfe71b2b98be |
|
BLAKE2b-256 | 1ddbb2605836d69eede71b6bcdbfcc6def8991fa7932e000762f7700551879c0 |
Hashes for quick_xmltodict-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a727a42606efe8cfa92aca751925fa7d24031b61bfc0e3326446a8d223189fe0 |
|
MD5 | ee8188c9d7547ede49c4166f8520afc9 |
|
BLAKE2b-256 | 8ae883ab7c591df2814517ec793242e4b759a4e622b5d0aad3bbdd444817655a |
Hashes for quick_xmltodict-0.1.0-cp310-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f14ddb6b6c32cff4ebac4ba4c4a78f95f863b8777a988695a4101ef8ac696b15 |
|
MD5 | fbf99d673175cb54f2a8c18469effe79 |
|
BLAKE2b-256 | 6605ad103ce4ea78a550a69b9f129eef61d605d37ec45d23ad70a105489824e3 |
Hashes for quick_xmltodict-0.1.0-cp310-none-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9530c61e519718ec078253aa07030c1f5efc6a899218394adf32c157047689a6 |
|
MD5 | ee2ddff45f8ade90b27220fcbd1d82ca |
|
BLAKE2b-256 | 9b3a39f002b49c4804634752c32bb8053bc38bc5f206afe9f97ae39f9645c21e |
Hashes for quick_xmltodict-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 36da9115ee5c767943c7b34f366ac47024fa5bbcb3e37d2d4e579caa0686992e |
|
MD5 | 2dd3771f4fb23f030d9a839904a01d46 |
|
BLAKE2b-256 | 33d26222b0544aa4a46e3c89db7600d82160ca468e68b328ce4973ba72570177 |
Hashes for quick_xmltodict-0.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0ffeb2151e1ee108af3563c517db055a5abd854bb824e9cfd9618ef9063aeb31 |
|
MD5 | 03ce7a75cd851cee4409b41d2217b63b |
|
BLAKE2b-256 | 8fcf094a5994c2d562fe326f9b15fd38bed7f5ab906999f723dcfe1cedf93bc7 |
Hashes for quick_xmltodict-0.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e8c13439a1661c1a6888dcb83c5585373bac2954ddbaffcb30c64f08df3e2798 |
|
MD5 | 37f81301ccb57af8a1053e2d1433f884 |
|
BLAKE2b-256 | 3f71313c0454b277e4552dd1d354251af380bd0175993f359caac662759e71c7 |
Hashes for quick_xmltodict-0.1.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 54579d4a5450b19b149e5c2ddaa1f03cfa5ff4d077cc52dce9c5b1619cd8786e |
|
MD5 | a44ae9133c1bc0c5fea71076174b345d |
|
BLAKE2b-256 | 4e04384a680f0772ce982ce67c87bfd0f25e34cda37cdcd4e9a5d03284be139b |
Hashes for quick_xmltodict-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6da44afa57655660389a10725916282f6e35c9fd47df3d5ab8402260d33c5789 |
|
MD5 | dd6b32abb4b921c1916fa7c81732530a |
|
BLAKE2b-256 | 1ae232d57be0e665efaaf36ff11c1ddd2659222f629b42759f4a88a0bef8ddfd |
Hashes for quick_xmltodict-0.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c087c43d9b12bdcef4bec5078ab009c067821b2c3a055bc51de891c3da6e0451 |
|
MD5 | fb908b18ca41afd61f91144123c22f86 |
|
BLAKE2b-256 | e76165c809d8b4690d3f13f2fc4332babc0cf6e24b9960155a461b9acc68fd58 |
Hashes for quick_xmltodict-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 872809922afc547bc75895e5db861ac16898c11ab0fa7dd180ea85d263a86417 |
|
MD5 | 47ba000dfdb965c6e9afeea8e8c3357f |
|
BLAKE2b-256 | 85779b1b6ce73ffb57e0a2b031f1243e6f44d21dcfc107152f1edd35e70731cf |
Hashes for quick_xmltodict-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1c10147d8f0c597cc7bc9a56dee1b346d7ea55bc1bb9238082942f5690620eb5 |
|
MD5 | 252a446d26cfa9d8a018351f19a92bac |
|
BLAKE2b-256 | 9becf631a07005538d806341766c013663136e8ae9d1e05c4e9aa419ff14658a |