[英]xml width schema as json in node.js
i try loop or access keys of a json object which was generated out of a xml object in node.js. 我尝试从node.js中的xml对象生成的json对象的循环或访问键。
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 xml文件: 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 架构: http : //caaml.org/Schemas/V5.0/Profiles/BulletinEAWS/CAAMLv5_BulletinEAWS.xsd
The gnereated json object look like that: jsoned对象看起来像这样:
{
"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']);
当我现在尝试使用
console.log(json['caaml:Bulletin']);
访问第一个键时console.log(json['caaml:Bulletin']);
i receive a undefined. 我收到一个未定义的。
How can i access the data or how can i loop through the object? 如何访问数据或如何遍历对象?
Thanks! 谢谢!
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.
语法是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"
}
}
]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.