User Guide Cancel

XmlChildPos

 

Description

Gets the position of a child element within an XML document object.

Returns

The position, in an XmlChildren array, of the _N_th child that has the specified name.

Category

XML functions

Function syntax

XmlChildPos(node, childName, index)
XmlChildPos(node, childName, index)
XmlChildPos(node, childName, index)

See also

IsXmlElemXmlElemNewXmlSearchXmlTransformUsing XML and WDDX in the Developing ColdFusion Applications

History

ColdFusion (2018 release): Changed parameter name elem to node.

ColdFusion MX: Added this function.

Parameters

Parameter

Description

node

XML element within which to search.

childName

XML child element for which to search. Must be an immediate child of the node parameter.

index

Index of XMLchild element for which to search.

Usage

You can use the returned index in the ArrayInsertAt and ArrayDeleteAt functions to change XML document objects. If the specified child is not found, the function returns -1.

Example

The following example searches XML document element,  xmlobject .employee.name1, for its second Status element child and uses the position in an ArrayDeleteAt function to remove the element:

<!--- Create an XML document object --->
<cfxml variable="xmlobject">
<employee>
<!-- A list of employees -->
<name EmpType="Regular">
<first>Almanzo</first>
<last>Wilder</last>
<Status>Medical Absence</Status>
<Status>Extended Leave</Status>
</name>
<name EmpType="Contract">
<first>Laura</first>
<last>Ingalls</last>
</name>
</employee>
</cfxml>
<!--- Find the second Status child of the first employee.name element --->
<cfscript>
elempos=XMLChildPos(xmlobject.employee.name[1], "Status", 2);
ArrayDeleteAt(xmlobject.employee.name[1].XmlChildren, elempos);
</cfscript>
<!--- Dump the resulting document object to confirm the deletion --->
<cfdump var="#xmlobject#">
<!--- Create an XML document object ---> <cfxml variable="xmlobject"> <employee> <!-- A list of employees --> <name EmpType="Regular"> <first>Almanzo</first> <last>Wilder</last> <Status>Medical Absence</Status> <Status>Extended Leave</Status> </name> <name EmpType="Contract"> <first>Laura</first> <last>Ingalls</last> </name> </employee> </cfxml> <!--- Find the second Status child of the first employee.name element ---> <cfscript> elempos=XMLChildPos(xmlobject.employee.name[1], "Status", 2); ArrayDeleteAt(xmlobject.employee.name[1].XmlChildren, elempos); </cfscript> <!--- Dump the resulting document object to confirm the deletion ---> <cfdump var="#xmlobject#">
<!--- Create an XML document object ---> 
<cfxml variable="xmlobject"> 
<employee> 
<!-- A list of employees --> 
<name EmpType="Regular"> 
<first>Almanzo</first> 
<last>Wilder</last> 
<Status>Medical Absence</Status> 
<Status>Extended Leave</Status> 
</name> 
<name EmpType="Contract"> 
<first>Laura</first> 
<last>Ingalls</last> 
</name> 
</employee> 
</cfxml> 

<!--- Find the second Status child of the first employee.name element ---> 
<cfscript> 
elempos=XMLChildPos(xmlobject.employee.name[1], "Status", 2); 
ArrayDeleteAt(xmlobject.employee.name[1].XmlChildren, elempos); 
</cfscript> 

<!--- Dump the resulting document object to confirm the deletion ---> 
<cfdump var="#xmlobject#">

Get help faster and easier

New user?