nodejs简单操作xml

这里简单介绍一下nodejs的第三方模块xml2js、fast-xml-parser、xml2json操作xml

多的不说了,直接进入主题:

下面是我要操作的xml:

<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

具体代码如下:

var xml2js = require('xml2js');
var fs = require('fs');
//创建builder的时候参数说明:
//rootName (default root or the root key name)
//renderOpts (default { 'pretty': true, 'indent': ' ', 'newline': '\n' })
//xmldec (default { 'version': '1.0', 'encoding': 'UTF-8', 'standalone': true }
//headless (default: false)
//cdata (default: false): wrap text nodes in <![CDATA[ ... ]]>
var jsonBuilder = new xml2js.Builder({
   rootName:'bean',
   xmldec:{
      version:'1.0',
      'encoding': 'GBK',
      'standalone': false}}); // jons -> xml

var xmlParser = new xml2js.Parser({explicitArray: false, ignoreAttrs: true}); // xml -> json

var json = {
   name: 'xxxxxx',
   pass: '111111',
   card: 5252452
};
function nameToUpperCase(name){
   return name.toUpperCase();
}

// jons -> xml
var json2xml = jsonBuilder.buildObject(json);
console.log('json解析成xml:'+json2xml);

// xml -> json
fs.readFile('../public/test.xml','utf-8',function(err,result){

   xmlParser.parseString(result, function (err, result) {

    console.log('xml解析成json:'+JSON.stringify(result));
    });
});


运行结果:




fast-xml-parser用法简介:


xml内容用上一个例子,

var fastXmlParser = require('fast-xml-parser');
var fs = require('fs.js');

//最简单的写法,直接调用parse方法
fs.readFile('../public/test.xml','utf-8',function(err,result){
    var jsonObj = fastXmlParser.parse(result);
    console.log('xml解析成json:'+JSON.stringify(jsonObj));
});

//当一个标签具有属性时
var options = {
    attrPrefix : "@_",
    textNodeName : "#text",
    ignoreNonTextNodeAttr : true,
    ignoreTextNodeAttr : true,
    ignoreNameSpace : true,
    textNodeConversion : true
};
fs.readFile('../public/test.xml','utf-8',function(err,result){
    if(fastXmlParser.validate(xmlData)=== true){//optional

        var jsonObj = fastXmlParser.parse(result,options);
        console.log('xml解析成json:'+JSON.stringify(jsonObj));
    }
});

//中间解析
fs.readFile('../public/test.xml','utf-8',function(err,result){

    var tObj = fastXmlParser.getTraversalObj(result,options);
    var jsonObj = fastXmlParser.convertToJson(tObj);
    console.log('xml解析成json:'+JSON.stringify(jsonObj));
});
建议自己在本地测试一下。


xml2json简单介绍:

var xml2json = require('xml2json');
var fs = require('fs');

//toJson第二个参数options如下:
var options = {
    object: false,
    reversible: false,
    coerce: false,
    sanitize: true,
    trim: true,
    arrayNotation: false,
    alternateTextNode: false
};

fs.readFile('../public/test.xml','utf-8',function(err,result){
    var xmltojsonobj = xml2json.toJson(result,options);
    console.log('xml解析成json:'+xmltojsonobj);
});

var json = {
    name: 'xxxxxx',
    pass: '111111',
    card: 5252452
};

var jsontoxmlobj = parser.toXml(json);
console.log('json解析成xml:'+jsontoxmlobj);



关于操作nodejs操作xml的各个模块比较:

 
 
  • xml-mapping : 速度快, 结果却不是那么令人满意,有瑕疵。
  • xml2js : 速度快, 结果却不是那么令人满意,有瑕疵。
  • xml2js-expat : 无法测试性能,因为它在高负载时出错。
  • xml2json : 基于node-expat . 在travis上不能安装.
  • fast-xml-parser : 非常非常快.

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值