分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

node js xml cdata

发布时间:2023-09-06 01:38责任编辑:沈小雨关键词:jsxml

需求:在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

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved