码迷,mamicode.com
首页 > Web开发 > 详细

node js xml cdata

时间:2018-01-23 20:37:28      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:tar   结构   typeof   使用   turn   cal   --   data   json   

需求:在node中 对xml 文件进行处理 对特殊的字段进行 cdata 处理

环境:window + node +webstorm

模块: xml2js

代码:

   

var xml2js = require(‘xml2js‘);
var fs = require(‘fs‘);
 
 
 
var parser = new xml2js.Parser({
                     explicitArray: false,//不使用数组模式
                     ignoreAttrs: false,//不忽略属性
                     strCdkey: "HeadLine,Keyword,DataContent"//自己定义的 特殊key值
                 }); 
var cBuilder = new xml2js.Builder({
                     cdata: true
                 });
 
 fs.readFile(‘../public/test.xml‘ , function (err, data) {
                     //data type ==>buffer
                     if (err) {
                        //callback(err)return
                     }
            parser.parseString(data, function (err, result) {
                        if(err){
                        //callback(err) ;//异常回调
                        return;
                       } 
                      //开始处理 xml 对象 result --> json格式  打点 . 调用就行了
                      //如: 
                      result.Items.Item.FirstCreateTime = new Date();
                      //如果xml文档 items下就一个item  就使用上面方法

//如果xml文档 items下有多个item 就使用下面方法 result.Items.Item[0].FirstCreateTime = new Date(); //如xml文档中本来就一个 想要追加变成多个 如下处理: result.Items= {"Item" :[result.Items.Item]}; result.Items.push( {item 内部结构的 json 格式} ); //经过这一步可以将json格式文件转为 xml 格式 result = cBuilder.buildObject(result); fs.writeFile("./public/newdemo.xml" , result, function (err) { if(err){ //callback(err); return } callback("ok") }); }); })

但是  还差一步就可以完成了

对 就是 自己定义的  strCdkey

找到xml2js 模块下lib 的xml2js.js文件修改2个地方
a.理论上这个地方可以不追加的 但是测试的时候没有产生效果

exports.defaults = {
    "0.1": {},“0.2”:{ //最后追加 这个字段 
strCdkey:""
}
b.将Builder.prototype.buildObject 方法下的
if (typeof child === ‘string‘ && _this.options.cdata && requiresCDATA(child)) ) {
改为

if (typeof child === ‘string‘ && ((_this.options.cdata && requiresCDATA(child)) || _this.options.strCdkey.indexOf(key) > -1)) {

大功告成!!!

开发时间 20180123 注意版本等

node js xml cdata

标签:tar   结构   typeof   使用   turn   cal   --   data   json   

原文地址:https://www.cnblogs.com/WindWall/p/8337188.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!