dom -
Create an in-memory DOM tree from XML
dom method ?arg arg ...?
This command provides the creation of complete DOM trees in memory. In the usual case a string containing a XML information is parsed and converted into a DOM tree. method indicates a specific subcommand.
The valid methods are:
dom parse $xml doc $doc documentElement root
parses the XML in the variable xml, creates the DOM tree in memory, make a reference to the document object, visible in Tcl as a document object command, and assigns this new object name to the variable doc. When doc gets freed, the DOM tree and the associated Tcl command object (document and all node objects) are freed automatically.
set document [dom parse $xml] set root [$document documentElement]
parses the XML in the variable xml, creates the DOM tree in memory, make a reference to the document object, visible in Tcl as a document object command, and returns this new object name, which is then stored in document. To free the underlying DOM tree and the associative Tcl object commands (document + nodes + fragment nodes) the document object command has to be explicitly deleted by:
$document deleteor
rename $document ""
The valid options are:
If such command is invoked inside a script given as argument to the domNode method appendFromScript, it creates a new node and appends this node at the end of the child list of the invoking element node. If the option -returnNodeCmd was given, the command returns the created node as Tcl command. If this option was omitted, the command returns nothing. Each command creates always the same type of node. Which type of node is created by the command is determined by the first argument to the createNodeCmd. The syntax of the created command depends on the type of the node it creates.
If the first argument of the method is elementNode, the created command will create an element node. The tag name of the created node is commandName without namespace qualifiers. The syntax of the created command is:
elementNodeCmd ?attributeName attributeValue ...? ?script? elementNodeCmd ?-attributeName attributeValue ...? ?script? elementNodeCmd name_value_list script
The command syntax allows three different ways to specify the attributes of the resulting element. These could be specified with attributeName attributeValue argument pairs, in an "option style" way with -attriubteName attributeValue argument pairs (the '-' character is only syntactical sugar and will be stripped off) or as a Tcl list with elements interpreted as attribute name and the corresponding attribute value. The attribute name elements in the list may have a leading '-' character, which will be stripped off.
Every elementNodeCmd accepts an optional Tcl script as last argument. This script is evaluated as recursive appendFromScript script with the node created by the elementNodeCmd as parent of all nodes created by the script.
If the first argument of the method is textNode, the command will create a text node. The syntax of the created command is:
textNodeCmd ?-disableOutputEscaping? data
If the optional flag -disableOutputEscaping is given, the escaping of the ampersand character (&) and the left angle bracket (<) inside the data is disabled. You should use this flag carefully.
If the first argument of the method is textNode, or cdataNode, the command will create an comment node or CDATA section node. The syntax of the created command is:
nodeCmd data
If the first argument of the method is piNode, the command will create a processing instruction node. The syntax of the created command is:
piNodeCmd target data