albfan / jmeld

A visual diff and merge tool
44 stars 31 forks source link

xml diff algorithm #12

Open albfan opened 9 years ago

albfan commented 9 years ago

Use https://github.com/albfan/diffxml project

albfan commented 9 years ago

Based on this article

http://www.roseindia.net/opensource/xmldiff.php

I have come back to life this projects:

https://github.com/albfan/3dm https://github.com/albfan/diffmk https://github.com/albfan/vmtools https://github.com/albfan/x-diff

there is also a good looking project to test xml output

https://github.com/xmlunit/xmlunit

Hope one of them has the basis for a good xml diffting.

albfan commented 8 years ago

This one too https://github.com/albfan/diffxml

opticyclic commented 8 years ago

XMLUnit is the way to go here. It has all the options required for allowing you to ignore certain xml attributes. e.g. Ignore attribute order http://xmlunit.sourceforge.net/api/org/custommonkey/xmlunit/XMLUnit.html#setIgnoreAttributeOrder%28boolean%29

You can also implement your own versions.

What does the output have to look like in order for JMeld to display it in the GUI?

albfan commented 8 years ago

By now, diff model is implemented with JMRevision, JMDelta and JMChunk. They represent line changes and word changes

You can see it in action on DiffTree addnodes() function or JMDiff paintDiffs()

It is not a robust implementation (as is line based)

opticyclic commented 8 years ago

Which branch is that in?

Line based isn't really good enough for XML diff as you can have attributes changing order. e.g. these are technically the same for XML.

<person gender="female" haircolour="blonde">
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>

<person haircolour="blonde" gender="female">
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>

There are lots of other options needed for XML diff too e.g. ignore child order, namespace, whitespace, comments etc

XmlUnit will also allow you to add your own ignore listeners so you could add one to ignore date time fields for instance. This is a common requirement when trying to reconcile 2 systems where the timestamps are slightly out.

albfan commented 8 years ago

There's no such branch. Here's only the research.

Although weak, that model should support a first approach for xml diff.

See tokenizers avaliable (word, char, syntax) for different results with same model.

Move change can the face on second round.

albfan commented 7 years ago

A rebumped project with working detection of moves -See test suite-

https://github.com/albfan/ssddiff

albfan commented 7 years ago

https://github.com/membrane/soa-model

See doc: http://membrane-soa.org/soa-model-doc/1.4/cmd-tool/wsdldiff-tool.htm

It has even integration test with docker