Expand description
3DM - Three-way XML Diff and Merge
This library provides structure-aware XML merging capabilities. It supports insert, delete, update, move, and copy operations on subtrees.
§Overview
3DM (3-way Diff/Merge) is an XML tree differencing and merging tool originally created by Tancred Lindholm as part of his Master’s thesis at Helsinki University of Technology (2001).
This is a Rust port of the original Java implementation.
§Key Features
- Structure-aware XML merging (unlike line-based diff/diff3)
- Supports insert, delete, update, move, and copy operations on subtrees
- No edit history required - only needs the XML files
§Example Use Case
A document edited by two reviewers - one moves a paragraph, the other fixes a spelling error in that paragraph. 3DM automatically integrates both changes.
Re-exports§
pub use error::Error;pub use error::Result;pub use matching::DiffMatching;pub use matching::HeuristicMatching;pub use matching::Matching;pub use matching::TriMatching;pub use measure::Measure;pub use node::new_base_node;pub use node::new_branch_node;pub use node::BaseNode;pub use node::BranchNode;pub use node::MatchArea;pub use node::MatchType;pub use node::MatchedNodes;pub use node::NodeInner;pub use node::NodeKind;pub use node::NodeRef;pub use node::WeakNodeRef;pub use node::XmlContent;pub use node::XmlElement;pub use node::XmlText;pub use xml::parse_file;pub use xml::parse_str;pub use xml::BaseNodeFactory;pub use xml::BranchNodeFactory;pub use xml::NodeFactory;pub use xml::XmlParser;pub use xml::XmlPrinter;pub use xml::XmlPrinterOptions;pub use merge::ConflictLog;pub use merge::ConflictType;pub use merge::EditLog;pub use merge::EditType;pub use merge::Merge;pub use merge::MergeEntry;pub use merge::MergeList;pub use merge::MergePair;pub use merge::MergePairList;pub use merge::Operation;pub use diff::BfsIndex;pub use diff::Diff;pub use diff::DiffOperation;pub use diff::Patch;pub use constants::*;