[node.js]node.js三种xml转josn解析方式

 请求头支持xml格式的  : body-parser-xml

1.接收的xml格式 转为josn 并获取其中的字段
 

var xmljosnstr=JSON.stringify(req.body);
  var xmljosn =JSON.parse(xmljosnstr);
  console.log(xmljosn); 
  console.log(xmljosn["MPD"]["$"]["type"]);

2.读取本地xml二进制流->josn  和本地josn二进制流-<josn 

router.post('/xml', function(req, res, body) { 

var fs = require("fs"); 

var file="./public/doc/test.xml";

var result=fs.readFileSync(file);//byte[]

var resultstr= ParseString(result);//xml转为josn后

 3.fxp简单的 xml字符串->josn

router.get('/', function(req, res, next) {  
var xml_string ='<user><name>ajanwu</name><age>12</age></user>';
console.log(xml_string); 
const  fxp =require("fast-xml-parser");
const xml2josn=fxp.parse(xml_string);
console.log( xml2josn); 
res.send('xml2josn:'+JSON.stringify(xml2josn));
});
var express = require('express');
var router = express.Router();
var  bodyParser = require('body-parser');
require('body-parser-xml')(bodyParser);//支持解析xml格式
const xml2js = require('xml2js');


//支持解析xml格式 的具体设置
//var app = express();
router.use(bodyParser.xml({
  xmlParseOptions: {
    normalize: false,     // Trim文本节点内的空白
    normalizeTags: false, // 将标记转换为小写
    explicitArray: true // 只有在大于1时才将节点放入数组
  }
}));




//1.接收的xml格式 转为josn 并获取其中的字段
router.post('/xml2', function(req, res, body) {
  var xmljosnstr=JSON.stringify(req.body);
  var xmljosn =JSON.parse(xmljosnstr);
  console.log(xmljosn); 
  console.log(xmljosn["MPD"]["$"]["type"]);
  //var typestr=xmljosn.get("mpd");
 // console.log( "typestr:"+typestr );
  res.send(xmljosn);

});




//2.读取本地xml二进制流->josn  和本地josn二进制流-<josn 
router.post('/xml', function(req, res, body) { 
var fs = require("fs"); 
var file="./public/doc/test.xml";
var result=fs.readFileSync(file);//byte[]
var resultstr= ParseString(result);//xml转为josn后
console.log(resultstr);
//读取本地josn 
// var fs=reauire('fs');
// var file="d:\\0.json";
// var result=JSON.parse(fs.readFileSync( file));
//操作对象
var xml_string = resultstr;
// '<response id="1" shop="aldi">'
//       +    'This is some other content'
//       +    '<who name="james">James May</who>'
//       +    '<who name="sam">'
//       +      'Sam Decrock'
//       +      '<location>Belgium</location>'
//       +    '</who>'
//       +    '<who name="jack">Jack Johnsen</who>'
//       +    '<games age="6">'
//       +      '<game>Some great game</game>'
//       +      '<game>Some other great game</game>'
//       +    '</games>'
//       +    '<note>These are some notes</note>'
//       +  '</response>';
  console.log( "xml_string:"+xml_string ); 
  res.send(xml_string);

//   var xmlreader = require("xmlreader"); 
// xmlreader.read(xml_string, function(errors, response){
//   if(null !== errors ){
//     console.log(errors)
//     return;
//   }
//   console.log( response.response );
//   res.send(response.response);
//   console.log( response.response.text() );
// });

});
  

//2.1  xml转josn 可以读取byte[]文件流
function ParseString(data){
  var xmlParser = new xml2js.Parser({explicitArray : false});
  var resData = null;
  xmlParser.parseString(data, function(err, result) {
      if(err){
          resData = 'error';
      }
      else{
          resData = result;
      }
  });
  return resData;
}


/* GET users listing. */    
//3.fxp简单的 xml字符串->josn
router.get('/', function(req, res, next) {  
var xml_string ='<user><name>ajanwu</name><age>12</age></user>';
console.log(xml_string); 
const  fxp =require("fast-xml-parser");
const xml2josn=fxp.parse(xml_string);
console.log( xml2josn); 
res.send('xml2josn:'+JSON.stringify(xml2josn));
});



module.exports = router;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值