Creates diffs of XML files
xmldiff is a library and a command-line utility for making diffs out of XML. This may seem like something that doesn’t need a dedicated utility, but change detection in hierarchical data is very different from change detection in flat data. XML type formats are also not only used for computer readable data, it is also often used as a format for hierarchical data that can be rendered into human readable formats. A traditional diff on such a format would tell you line by line the differences, but this would not be be readable by a human. xmldiff provides tools to make human readable diffs in those situations.
Full documentation is on xmldiff.readthedocs.io
xmldiff is still under rapid development, and no guarantees are done that the output of one version will be the same as the output of any previous version.
xmldiff is both a command-line tool and a Python library. To use it from the command-line, just run xmldiff with two input files:
$ xmldiff file1.xml file2.xml
As a library:
from lxml import etree from xmldiff import main, formatting differ = diff.Differ() diff = main.diff_files('file1.xml', 'file2.xml', formatter=formatting.XMLFormatter()) print(diff)
There is also a method diff_trees() that take two lxml trees, and a method diff_texts() that will take strings containing XML.
Changes from xmldiff 0.6/1.x
- A complete, ground up, pure-Python rewrite
- Easier to maintain, the code is less complex and more Pythonic, and uses more custom classes instead of just nesting lists and dicts.
- Fixes the problems with certain large files and solves the memory leaks.
- A nice, easy to use Python API for using it as a library.
- Adds support for showing the diffs in different formats, mainly one where differences are marked up in the XML, useful for making human readable diffs.
- These formats can show text differences in a semantically meaningful way.
- The default output format of the command line tool now does not require you to parse the output to apply it. An output format compatible with 0.6 / 1.x is also available.
- 2.0 is urrently significantly slower than xmldiff 0.6/1.x, but this will change in the future. Currently we make no effort to make xmldiff 2.0 fast, we concentrate on making it correct and usable.
The diff algorithm is based on “Change Detection in Hierarchically Structured Information”, and the text diff is using Google’s diff_match_patch algorithm.
- A complete, bottom-up, pure-python rewrite
- New easy API
- 100% test coverage
- New output formats:
- A new default output format with new actions
- A format intended to be parseable by anyone parsing the old format.
- XML with changes marked though tags and attributes
- xmldiff 2.0 is significantly slower than xmldiff 0.6 or 1.0, the emphasis so far is on correctness, not speed.
Release history Release notifications
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size & hash SHA256 hash help||File type||Python version||Upload date|
|xmldiff-2.0-py2.py3-none-any.whl (55.5 kB) Copy SHA256 hash SHA256||Wheel||py2.py3||Sep 25, 2018|
|xmldiff-2.0.tar.gz (87.0 kB) Copy SHA256 hash SHA256||Source||None||Sep 25, 2018|