const transform = require('camaro')
// const omitEmpty = require('omit-empty')
const xml = require('fs').readFileSync('so2.xml', 'utf-8')
const template = {
data: ['//caaml:DangerRating', {
locRef: 'caaml:locRef/@xlink:href',
validTime: {
beginPosition: '//caaml:TimePeriod/caaml:beginPosition',
endPosition: '//caaml:TimePeriod/caaml:endPosition'
},
validElevation: {
uom: '//caaml:ElevationRange/@uom',
endPosition: '//caaml:endPosition'
},
mainValue: '//caaml:mainValue'
}]
}
const result = transform(xml, template)
console.log(JSON.stringify(result.data, null, 2))
You can add more attributes if you want. The syntax is Xpath 1.0.
Output of the script
[
{
"locRef": "",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R1",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R1",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R1",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R1",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R2",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R2",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R2",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R2",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R3",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R3",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R3",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R3",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R4",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R4",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R4",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R4",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R5",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R5",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R5",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R5",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R6",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R6",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R6",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R6",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R7",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R7",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R7",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R7",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R8",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R8",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R8",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R8",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R9",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R9",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R9",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R9",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R10",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R10",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R10",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R10",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R11",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R11",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R11",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R11",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R12",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R12",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R12",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
},
{
"locRef": "AT7R12",
"mainValue": "3",
"validElevation": {
"endPosition": "2017-05-01T11:59:59+02:00",
"uom": "m"
},
"validTime": {
"beginPosition": "2017-05-01T00:00:00+02:00",
"endPosition": "2017-05-01T11:59:59+02:00"
}
}
]
caaml:DangerRatingis it?