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)
Argument | Type | Description |
---|---|---|
XML | String | The full XML data, stored in a string variable. |
XPath | String | XPath 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]