<arc:set attr="xml.xpath" value="/" /><arc:set attr="xml.uri" value="[Filepath]" /><arc:call op="xmlDOMSearch" in="xml" out="result"> <!-- xpath is a context sensitive function in arcscript. If an xml document is loaded in a search, xpath will return the name of a child relative to the search result --> <arc:set attr="output.header:e_id" value="[xpath('/Schedule/Results/TrackingEvent/e_id')]" /> <arc:set attr="output.header:p_uuid" value="[xpath('/Schedule/Results/TrackingEvent/p_uuid')]" /> <arc:set attr="output.header:e_country_code" value="[xpath('/Schedule/Results/TrackingEvent/e_country_code')]" /> <arc:set attr="output.header:c_carrier_name" value="[xpath('/Schedule/Results/TrackingEvent/c_carrier_name')|replace(' ','')]" /> <arc:set attr="output.header:p_tracking_number" value="[xpath('/Schedule/Results/TrackingEvent/p_tracking_number')]" /></arc:call><arc:set attr="output.FilePath" value="[FilePath]" /><arc:set attr="output.filename" value="[output.header:e_id]-[output.header:e_country_code]-[output.header:p_tracking_number]-[output.header:c_carrier_name]-[output.header:p_uuid].xml" /><arc:push item="output" />
You can use xmlDOMGet to map all the values from the XML node, save these in the header, and then apply them for the filename.
Here’s a simple modified script (add other XPaths as needed):
<arc:set attr="xml.uri" value="[FilePath]" /><arc:set attr="xml.map:e_id" value="Schedule/Results/TrackingEvent/e_id" /><arc:set attr="xml.map:c_carrier_name" value="Schedule/Results/TrackingEvent/c_carrier_name" /><arc:call op="xmlDOMSearch" in="xml" out="result"> <!-- xpath is a context sensitive function in arcscript. If an xml document is loaded in a search, xpath will return the name of a child relative to the search result --> <arc:set attr="output.header:e_id" value="[result.e_id]" /> <arc:set attr="output.header:c_carrier_name" value="[result.c_carrier_name |replace(' ','')]" /> </arc:call><arc:set attr="output.FilePath" value="[FilePath]" /><arc:set attr="output.filename" value="[output.header:e_id]-[output.header:c_carrier_name].xml" /><arc:push item="output" />
If you want to Get the date from the XML file from the XPaths, you use the xmlDOMGet operation to get the data from the specified XPath and then use those data to rename the filename, You can use this example we have on our help on how to get the data from the XML file and add it as a header to the file with an additional arc:set to rename the filename.
I just added a condition to rename the filename as shown below, we need use the map:* to call the xmlDOMGet operation to Get the values from the specific XPath: Below is the modified ArcScript:
Note:
map:*: A set of one or more inputs where the name of the mapped parameter precedes the colon (for example, map:foo), and the value is the xpath to the desired xml element in the document. See Examples for more information in the help document - CData Arc - xmlDOMGet | Version 24.2.8965
<!-- Setting the input uri and map parameters --><arc:set attr="xml.uri" value="[Filepath]" /><arc:set attr="xml.map::e_id" value="/Schedule/Results/TrackingEvent/e_id" /><arc:set attr="xml.map::p_uuid" value="/Schedule/Results/TrackingEvent/p_uuid" /><arc:set attr="xml.map::e_country_code" value="/Schedule/Results/TrackingEvent/e_country_code" /><arc:set attr="xml.map::c_carrier_nameInitial" value="/Schedule/Results/TrackingEvent/c_carrier_name" /><arc:set attr="xml.map::p_tracking_number" value="/Schedule/Results/TrackingEvent/p_tracking_number" /><!-- Calling the operation, passing in the xml item and creating a "result" output item --><arc:call op="xmlDOMSearch" in="xml" out="result"><! The nameFinal attribute below holds the final name without space with the help of the replacement operation and the output.filename will give the expected output --> <arc:set attr="c_carrier_nameFinal" value="[result.c_carrier_nameInitial | replace(' ','')]" /><arc:set attr="output.filename" value="[result.e_id]-[result.e_country_code]-[result.p_tracking_number]-[result.c_carrier_nameFinal]-[result.p_uuid].xml" /></arc:call><arc:set attr="output.FilePath" value="[FilePath]" /><arc:push item="output" />
This website stores cookies on your computer. These cookies are used to collect information about how you interact with our website and allow us to remember you. We use this information in order to improve and customize your browsing experience and for analytics and metrics about our visitors both on this website and other media.
Review section III of our Privacy Policy for more information on cookies.
To opt out of “sale” or “sharing” of non-cookie data, visit our Privacy Rights Request Form.