Uses an XPath language expression to search an XML document object.
The results of the XPath search. For details, see Usage.
XmlSearch(xmlDoc
,xPathString
)
cfxml, IsXML, XmlChildPos, XmlParse, XmlTransform; "Using XML and WDDX" in the ColdFusion Developer's Guide
ColdFusion 8: Added support for returning any valid XPath result, not just arrays of XML object nodes.
ColdFusion MX 7: Added support for attribute searches.
ColdFusion MX: Added this function.
Parameter |
Description |
---|---|
xmlDoc |
XML document object |
xPathString |
XPath expression |
The XmlSearch function attempts to return the values returned by the search whenever possible. For example, if the XPath expression returns a Boolean, the CFML variable is assigned a true or false value.
The following table lists XPath expression result data types and how they are represented in the CFML return value.
XPath return type |
ColdFusion representation |
---|---|
Boolean |
Boolean |
Null |
"" (empty string) |
Number |
Number |
String |
String |
NodeSet |
Array of XML nodes |
Result Tree Fragment |
Array of XML nodes |
Results that are Unknown or have an unresolved variable in the expression throw an error.
XPath is specified by the World Wide Web Consortium (W3C). For detailed information on XPath, including XPath expression syntax, see the W3C website at www.w3.org/TR/xpath.
The following example extracts the elements named last, which contain employee last names, from an XML file, and displays the names.
The employeesimple.xml file contains the following XML:
<?xml version="1.0" encoding="UTF-8"?> <employee> <!-- A list of employees --> <name EmpType="Regular"> <first>Almanzo</first> <last>Wilder</last> </name> <name EmpType="Contract"> <first>Laura</first> <last>Ingalls</last> </name> </employee>
The CFML file contains the following lines:
<cfscript> myxmldoc = XmlParse("C:\CFusionMX7\wwwroot\examples\employeesimple.xml"); selectedElements = XmlSearch(myxmldoc, "/employee/name/last"); for (i = 1; i LTE ArrayLen(selectedElements); i = i + 1) writeoutput(selectedElements[i].XmlText & "<br>"); </cfscript>