0

i try loop or access keys of a json object which was generated out of a xml object in node.js.

So far my code:

var fs = require('fs');
var parser = require('xml2json');
var xsd = require('libxml-xsd');

exports.readXml = function () {
    fs.readFile( './beispiel_daten/xml_data.xml', 'utf8', function(err, xml) {
        if (xml) {
                xsd.parseFile("./beispiel_daten/xml_schema.xsd", function(err, schema){
                    schema.validate(xml, function(err, validationErrors){

                        if (!err) {
                            var json = parser.toJson(xml);
                            console.log(json['caaml:Bulletin']);
                        }

                    });
                });
            }
    });

}

The xml file: https://lawine.tirol.gv.at/rest/bulletin/2017-05-01_073000/xml/de

The schema: http://caaml.org/Schemas/V5.0/Profiles/BulletinEAWS/CAAMLv5_BulletinEAWS.xsd

The gnereated json object look like that:

{  
   "caaml:Bulletin":{  
      "xmlns:caaml":"http://caaml.org/Schemas/V5.0/Profiles/BulletinEAWS",
      "xmlns:gml":"http://www.opengis.net/gml",
      "xmlns:xlink":"http://www.w3.org/1999/xlink",
      "xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance",
      "xsi:schemaLocation":"http://caaml.org/Schemas/V5.0/Profiles/BulletinEAWS http://caaml.org/Schemas/V5.0/Profiles/BulletinEAWS/CAAMLv5_BulletinEAWS.xsd",
      "gml:id":"BulletinDeID3018",
      "xml:lang":"de",
      "caaml:metaDataProperty":{  ...

When i now try to access the first key with console.log(json['caaml:Bulletin']); i receive a undefined.

How can i access the data or how can i loop through the object?

Thanks!

6
  • what are you trying to get? what do you expect from the json output? Commented Aug 7, 2017 at 14:44
  • i need to loop the data of caaml:bulletinResultsOf -> caaml:BulletinMeasurements -> caaml:dangerRatings Commented Aug 7, 2017 at 14:48
  • all these nodes caaml:DangerRating is it? Commented Aug 7, 2017 at 14:49
  • yes, all the nodes of caaml: DangerRating, thanks Commented Aug 7, 2017 at 14:50
  • I also tried out github.com/libxmljs/libxmljs this, but i could not get it to work Commented Aug 7, 2017 at 14:51

1 Answer 1

1
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"
    }
  }
]
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.