Browsing the XML Document

The handle to a document is the handle to a "virtual" root node. The root node of an XML document would be the first child of the document handle. Typically, an XML document only has one root element - so you would always get the root node by getting the first child of the document. But if the root contains processing instructions (<?xml ... >), these instructions are also children of the document.

Starting at the "virtual" document root node, you can iterate through all nodes in a document. You can get the child nodes of a node with XmlGetChildNodes. This function returns a handle to a node list. A node list contains 0 or more node handles. These handles can be received with XmlGetItem with a 0 based index to the element in the list. The number of elements can be received with XmlGetCount on the node list. You can access a child node directly with XmlGetChildByIndex.

dcltrans
transaction TMain
var
  hDoc, hChildren, hRoot, hChild : number;
begin
  hDoc      := XmlCreateDocumentFromXml("<root><child>value1</child><child>value2</child></root>");
  hRoot     := XmlGetChildByIndex(hDoc, 0);
  hChildren := XmlGetChildNodes(hRoot);
  hChild    := XmlGetItem(hChildren, 1);
  ...
  XmlFreeHandle(hChild);
  XmlFreeHandle(hChildren);
  XmlFreeHandle(hRoot);
  XmlFreeHandle(hDoc);
end TMain;