xmlAppendChild()

Adds a new child node into the DOM tree as child of given node. Optionally the node's value can be set.

Synopsis

int xmlAppendChild(unsigned doc, int node, int nodeType [, string value]);

Parameters

Parameter Description
doc Document ID. Reference to the whole XML document (return value from xmlNewDocument()).
node Child node ID.
nodeType Node type. See constants below.
value

Optional parameter.

Value of the child node.

Return value

If an error occurs, -1 is returned. Otherwise, it returns the node identifier of the newly created node.

Description

Adds a new child node into the DOM tree as child of given node. Optionally the node's value can be set.

When the node is passed as -1, the child node will be created as root node (child node of the document).

The entered node has one of the following node type constants:

Constant
XML_ATTRIBUTE_NODE
XML_CDATA_SECTION_NODE
XML_COMMENT_NODE
XML_DOCUMENT_NODE
XML_DOCUMENT_FRAGMENT_NODE
XML_DOCUMENT_TYPE_NODE
XML_ELEMENT_NODE
XML_ENTITY_NODE
XML_ENTITY_REFERENCE_NODE
XML_NOTATION_NODE
XML_PROCESSING_INSTRUCTION_NODE
XML_TEXT_NODE

EXAMPLe

The example creates a new document through xmlNewDocument() and adds new nodes through xmlAppendChild() as well as prints the child nodes through xmlChildNodes().

#uses "CtrlXml"
main()
{
  dyn_uint nodes;
  string nNameP, nName1,nName2, nName3, nName4, nName5;
  unsigned docNum = xmlNewDocument();
  //Create a new document
  xmlAppendChild(docNum, -1, XML_COMMENT_NODE, "my fine new
  comment");
  //Add a new node
  int node = xmlAppendChild(docNum, -1, XML_ELEMENT_NODE, "Parent
  node");
  //Add a new node
  nNameP = xmlNodeName(docNum, node);
  int PNode = xmlParentNode(docNum, node);
  DebugN("Parent node:", nNameP);
  xmlAppendChild(docNum,PNode, XML_ELEMENT_NODE, "First
  element");
  nName1 = xmlNodeName(docNum, node);
  DebugN("Node 1:", nName1);
  int node2 = xmlAppendChild(docNum, -1, XML_ELEMENT_NODE, "Second
  element");
  nName2 = xmlNodeName(docNum, node2);
  DebugN("Node 2:", nName2);
  int j = xmlSetElementAttribute(docNum, node2, "Attribute1",
  "Example Attribute");
  //Set a new attribute
  int node3 = xmlAppendChild(docNum, node2, XML_ELEMENT_NODE,
  "Third element");
  nName3 = xmlNodeName(docNum,node3);
  DebugN("Node 3:", nName3);
  int i = xmlSetNodeValue(docNum, nName2, "And a node value");
  //Set a new value
  int node4 = xmlAppendChild(docNum, -1, XML_ELEMENT_NODE, "Fourth
  element");
  nName4 = xmlNodeName(docNum, node4);
  DebugN("Node 4:", nName4);
  int node3 = xmlAppendChild(docNum, -1, XML_ELEMENT_NODE, "Fifth
  element");
  xmlSetElementAttribute(docNum, node3, "Attribute2", "A second
  example attribute");
  int k = xmlChildNodes(docNum, PNode, nodes);
  DebugN("xmlChildNodes successful:", k, "List of the nodes:",
  nodes);
  //Print the child nodes
}

Assignment

XML Control Extension

Availability

CTRL. In every script where the "CtrlXml" extension (#uses "CtrlXml") is used.