XMLGetNode
(Engine-Level Function)
Description: | Returns an XMLNode from a tree. |
Returns: | The XMLNode specified. |
Usage: | Script Only. |
Function Groups: | XML |
Related to: | XMLParse | XMLProcessor | XMLAddSchema | XMLWrite | XMLCloneNode | XMLCreateNode | XMLDeleteMember | GetXMLNodeArray |
Format: | XMLGetNode(XMLNode) |
Parameters: |
XMLNode |
Required. The XMLNode to return. |
Comments: | When isolating a particular XMLNode, to pass to a subroutine for instance, the automatic subscripting of an XMLNode to provide the value in its #content member means that this is passed to the subroutine. Thus, GoodXML = Valid(XMLGetNode(XMLData)); Is not equivalent to XMLObject = XMLGetNode(XMLData); GoodXML = Valid(XMLObject); To defeat the automatic subscripting, use this function. See notes in VTScada Engine XML API for a discussion of how to address arrays within an XML node. |
Example:
Given an XMLNode named "MyNode" as created with the following code:
AttribsDict = Dictionary(0); AttribsDict["id"] = 42; MembersDict = Dictionary(0); MembersDict["Item1"] = XMLCreateNode("01234567890"); MyNode = XMLCreateNode("abc", AttribsDict, "http://trihedral.com/XML", MembersDict);
Then calling a subroutine as follows will pass the value of the #content member to the subroutine, in this case: "abc":
MySub(MyNode);
To pass the actual node use the following construct:
MySub(XMLGetNode(MyNode));
Note that a similar construct uses the address-of operator (&) but then the subroutine will have to de-reference the parameter (using the * operator) on every use.