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