将XML转换为JSON后,将新的值赋给对象
我将一些XML属性转换成JSON。
这是整个function,下面我将逐步解释它
request.execute('[someSP].[spSomeSP]', function(err, dataset) { if (err) { reject(err); } if (request.parameters.param_GRID_REPORT_ID.value !== null) { _.forEach(dataset, function(items) { _.forEach(items, function(item) { for (var key in item) { if (key.indexOf('XX') === 0) { var toJsonVar = item[key], toJsonRes; parseString(toJsonVar, function(err, res) { toJsonRes = res; console.log(toJsonRes); }); } } }); }); _.forEach(dataset, function(report) { console.log(report); fullfill(report); }); } });
这是我在这个console.log(report);
收到console.log(report);
{ BET: 57635034, CUSTOMER: 181645, SPORT: 'NFL', XX_FILL_OPEN: '<element>\r\n\t<element_type>wager_action_button</element_type>\t\r\n\t<element_name>Fill Open</element_name>\r\n\t<element_call>fillOpen(57635034)</element_call>\r\n\t<element_content></element_content>\r\n</element>', XX_VIEW: '<element>\r\n\t<element_type>betslip_selection_checkbox</element_type>\t\r\n\t<element_name></element_name>\r\n\t<element_call>addRemoveSelectionFromSlip_checkbox(1738756,0,1,1)</element_call>\r\n\t<element_content>0</element_content>\r\n</element>' }
正如你所看到的,有一些以XX_
开头的道具包含XML属性,所以必须把这些XML属性转换成这样的json
_.forEach(dataset, function(items) { _.forEach(items, function(item) { for (var key in item) { if (key.indexOf('XX') === 0) { var toJsonVar = item[key], toJsonRes; parseString(toJsonVar, function(err, res) { toJsonRes = res; console.log(toJsonRes); }); } } }); });
现在这个console.log(toJsonRes);
返回这个(这是XML元素,但现在以JSON格式)
{ element: { element_type: [ 'wager_action_button' ], element_name: [ 'Fill Open' ], element_call: [ 'fillOpen(57635034)' ], element_content: [ '' ] } } { element: { element_type: [ 'betslip_selection_checkbox' ], element_name: [ '' ], element_call: [ 'addRemoveSelectionFromSlip_checkbox(1738756,0,1,1)' ], element_content: [ '0' ] } }
所以,只是为了给你一个更好的看法:
之前:
XX_FILL_OPEN: '<element>\r\n\t<element_type>wager_action_button</element_type>\t\r\n\t<element_name>Fill Open</element_name>\r\n\t<element_call>fillOpen(57635034)</element_call>\r\n\t<element_content></element_content>\r\n</element>'
后:
{ element: { element_type: [ 'wager_action_button' ], element_name: [ 'Fill Open' ], element_call: [ 'fillOpen(57635034)' ], element_content: [ '' ] } }
我想知道的是,我应该如何声明这些新值,以便将它们replace为旧的XML属性?
在parsingstring时,可以更改项目的XX(...)
属性:
parseString(toJsonVar, function(err, res) { item[key] = res; });