nodejs简单操作xml

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

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

下面是我要操作的xml:

xml version="1.0" encoding="UTF-8"?>
<note>
<to>Toveto>
<from>Janifrom>
<heading>Reminderheading>
<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 
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));
    });
});


运行结果:

nodejs简单操作xml_第1张图片



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 : 非常非常快.

你可能感兴趣的:(nodejs简单操作xml)