/
xmlToItems

xmlToItems



Function: xmlToItems()

Extracts nodes from a chunk of XML (a string) and creates a list of items - which can be processed just as any list of values in PhixFlow.

Returns null when the extract fails.

Syntax

xmlToItems(XML, XPath)

ArgumentTypeDescription
XMLStringThe full XML data, stored in a string variable.
XPathStringXPath expression to extract data from the XML.
Note : XPath is a w3 standard language for addressing parts of an XML document. For more details see www.w3.org/TR/xpath

Common Errors

"NCNames cannot start with the characters XX" 

XML Headers cannot start with numbers, so an error like this means somewhere within the JSON there is a key value that starts with a number, or an invalid character.  In the below JSON, we can see a key that starts with the number 9. This cannot be converted to XML, so the invalid character(s) need to be removed and replaced before xmlToItems() can be performed. 

"flags_options": {
"9": {
"trusted": true
}
},
"trusted": true

For example, in this case the following replaceAll() expression can be used to replace the key with the text "number".

replaceAll($cleanJSON,'"\\d+":','"number":')

See Regular Expressions.

Examples

If we add some xml into a $-variable:

do(
   $xml = 
   '<?xml version="1.0" encoding="ISO-8859-1"?><store><thing category="X1"><name>Item1</name><price>15.00</price></thing><thing category="X2"><name>Item2</name><price>17.99</price></thing></store>',

   xmlToItems($xml, "/store/thing/price")

)

/* 
 * Where the xml would expanded would look like the below:
 *
   '<?xml version="1.0" encoding="ISO-8859-1"?>
   <store>
      <thing category="X1">
         <name>Item1</name>
         <price>15.00</price>
      </thing>
      <thing category="X2">
         <name>Item2</name>
         <price>17.99</price>
      </thing>
   </store>',
 *
 */

Returns the values (in a list):

[15.00, 17.99]

See Also

Related content

XML Namespace
XML Namespace
Read with this
xmlToItems
xmlToItems
More like this
HTTP Collector
HTTP Collector
Read with this
xmlToItems
xmlToItems
More like this
JSON Node
JSON Node
Read with this
xmlToItems
xmlToItems
More like this