Skip to main content

Crate xml_3dm

Crate xml_3dm 

Source
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::*;

Modules§

constants
Constants used throughout 3DM.
diff
Diff and Patch algorithms for XML trees.
error
Error types for 3DM.
matching
Tree matching algorithms.
measure
Node similarity measurement.
merge
3-way merge algorithm.
node
Node structures for XML tree representation.
xml
XML parsing and output.