@wmfs/xml-flatten2csv1.2.0 • Public • Published
Takes an XML file and transforms it into a CSV file, based on a mapping you provide.
One XML element and its contents can be transformed into multiple CSV output lines.
$ npm install xml-flatten2csv --save
const xmlFlatten2csv =
Cape FeareBart10Marge36Lisa8Sideshow BobHomer Loves FlandersHomer39Ned Flanders60
"title","name","child","age""Cape Feare","Bart","yes","Cape Feare","Marge",,36"Cape Feare","Lisa","yes","Cape Feare","Sideshow Bob",,"Homer Loves Flanders","Homer",,39"Homer Loves Flanders","Ned Flanders",,60
||A path to the xml input file.|
||The path and filename of the generated CSV output file (note that any intermediate folders will be created).|
||The XML root tag for each subtree to process,|
||The jsonpath of the elements to split records on|
||See the Header Map section for more details.|
||See Additional options|
options.headerMap has the structure:
selector csvHeader typeselector csvHeader type...
- selector is either a jsonpath into the subtree, or a condition consisting of a jsonpath test and either a value or a jsonpath into the subtree
- type must be integer, date or string
For straightforward linear transformations, where one XML subtree maps to one line of CSV output, consider xml2csv instead.
The additional options are a set of key-value pairs -
||How to handle namespace prefixes - omit to do nothing, 'strip' to remove prefixes, or any other string to replace the ':' with something else|
||If set to 'wrap', when an element has an xml:lang attribute, create an intermediate wrapper element of named for the attribute value. Eg
||A transformation function applied to the selected JSON objects before running the header map queries. The modified JSON should be the return value of the function, even if it's changed in-place.|
$ npm test