/// <summary> /// Calculate the editing distance between the two nodes (with caching) /// </summary> /// <returns>The minimal editing distance</returns> private static int Distance(XNode node1, XNode node2, bool toRecord, int threshold) { var isElement1 = node1.IsElement(); var isElement2 = node2.IsElement(); if (isElement1 && isElement2) { if (node1.Name != node2.Name) { return(NoConnection); } int dist = DistanceElements(node1, node2, threshold); if (toRecord && (dist < NoConnection)) { distanceLookup[new Tuple <XNode, XNode>(node1, node2)] = dist; } return(dist); } if (!isElement1 && !isElement2) { return(1); } return(NoConnection); }
/// <summary> /// Calculate the editing distance between the two nodes (with caching) /// </summary> /// <returns>The minimal editing distance</returns> private static int Distance(XNode node1, XNode node2, bool toRecord, int threshold) { var isElement1 = node1.IsElement(); var isElement2 = node2.IsElement(); if (isElement1 && isElement2) { if (node1.Name != node2.Name) return NoConnection; int dist = DistanceElements(node1, node2, threshold); if (toRecord && (dist < NoConnection)) distanceLookup[new Tuple<XNode, XNode>(node1, node2)] = dist; return dist; } if (!isElement1 && !isElement2) return 1; return NoConnection; }