TXMLDocumentResync (Delphi)

From RAD Studio Code Examples
Jump to: navigation, search

Description

The following example uses the Resync function.

Code

procedure Test_Resync;
var
  LDocument: IXMLDocument;
  LCount: Integer;
begin
  LDocument := TXMLDocument.Create(nil);
  LDocument.LoadFromXML('<TestElement><!-- TestComment --></TestElement>');

  { Cache the document element ChildNodes.Count property.
    Otherwise resync is unnecessary. }
  LCount := LDocument.DocumentElement.childNodes.Count;

  { Modify the document element child nodes through the DOM interface. }
  LDocument.DocumentElement.DOMNode.appendChild
    (LDocument.DOMDocument.createCDATASection('test node'));

  { The two child lists are now different. }
  Writeln('LDocument.DocumentElement.ChildNodes.Count: ' +
    IntToStr(LDocument.DocumentElement.childNodes.Count));
  Writeln('LDocument.DocumentElement.DOMNode.childNodes.length: ' +
    IntToStr(LDocument.DocumentElement.DOMNode.childNodes.length));

  LDocument.Resync;
  Writeln(sLineBreak + 'After resync...' + sLineBreak);

  { The two child lists are now synchronized. }
  Writeln('LDocument.DocumentElement.ChildNodes.Count: ' +
    IntToStr(LDocument.DocumentElement.childNodes.Count));
  Writeln('LDocument.DocumentElement.DOMNode.childNodes.length: ' +
    IntToStr(LDocument.DocumentElement.DOMNode.childNodes.length));
end;

Uses