Skip to content

XmlNode.Sync

Overview

XmlNode[] XmlNode.Sync ( xpath, input, [ hashCallback ], [ removedNodes ] )
Synchronizes specified xpath with input nodes and returns array of synchronized nodes.

Arguments

String xpath

XPath of node to be append

XmlNode[] input

Array of nodes to be synchronize

Function hashCallback

Hash function to compare nodes. Can be omitted.

XmlNode[] removedNodes

Instance of array to add removed nodes. Can be omitted.

Remarks

Synchornization is based on input nodes and performs following actions on specified xpath;

  • Node comparison done with specified hash function which returns unique identifier of node. If not specified uses the node instance.
  • Non-existing nodes on input auto created in current node.
  • Existing nodes in both values are copied.
  • Non-existing nodes on input are removed from current node. Optionally list of removed added on "removedNodes" parameter.

Examples

Synchronize "Source" and "Target" node contents

var questions = $Xml.SelectAll('Source/Questions/Question');
$Xml.Sync('Target/Questions/Question', questions, function() {
  return this.Evaluate('Id');
});

Performs xquery and merges results with current nodes

$Xml.SelectAll('Standards/Standard', function() {
   var questions = $XmlRepository.QueryXml('for $q in InternalAudit//Question\
     where $q/Standards/Standard/Standard=$standard and $q/Departments/Department=$department\
     return\
      <Question>\
         { $q/Id }\
         { $q/Criteria }\
         { $q/Expectation }\
      </Question>', {
      standard : this.Evaluate('Standard'),
      department : $Xml.Evaluate('Department')
   });
   this.Sync('Questions/Question', questions, function() {
     return this.Evaluate('Id');
   });
 });

See Also