设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 运营中心 > 网站设计 > 正文

NodeJS实现微信公众号关注后自动回复功能(2)

发布时间:2021-02-25 21:44 所属栏目:12 来源:网络整理
导读:div class="jb51code" pre class="brush:js;" 'use strict'; //引入模块 var xml2js = require('xml2js'); var Promise = require('bluebird'); //导出解析XML的方法 exports.parseXMLAsync = function(xml) { retu

<div class="jb51code">
<pre class="brush:js;">
'use strict';
//引入模块
var xml2js = require('xml2js');
var Promise = require('bluebird');
//导出解析XML的方法
exports.parseXMLAsync = function(xml) {
return new Promise(function(resolve,reject) {
xml2js.parseString(xml,{ trim: true },function(err,content) {
if (err) {
reject(err);
} else {
resolve(content);
};
});
});
};
//因为value值可能是嵌套多层的 所以先对value值进行遍历
function formatMessage(result) {
//声明空对象message
var message = {};
//对result类型进行判断
if (typeof result === 'object') {
//如果是object类型 通过Object.keys()方法拿到result所有的key 并存入keys变量中
var keys = Object.keys(result);
//对keys进行循环遍历
for (var i = 0; i < keys.length; i++) {
//拿到每个key对应的value值
var item = result[keys[i]];
//拿到key
var key = keys[i];
//判断item是否为数组或者长度是否为0
if (!(item instanceof Array) || item.length === 0) {
//如果item不是数组或者长度为0 则跳过继续向下解析
continue;
}
//如果长度为1
if (item.length === 1) {
//拿到value值存入val变量
var val = item[0];
//判断val是否为对象
if (typeof val === 'object') {
//如果val为对象 则进一步进行遍历
message[key] = formatMessage(val);
} else {
//如果不是对象 就把值赋给当前的key放入message里 并去除收尾空格
message[key] = (val || '').trim();
}
}
//如果item的长度既不是0也不是1 则说明它是一个数组
else {
//把message的key设置为空数组
message[key] = [];
//对数组进行遍历
for (var j = 0,k = item.length; j < k; j++) {
message[key].push(formatMessage(item[j]));
}
}
}
}
return message;
}

exports.formatMessage = function(xml) {
return new Promise(function(resolve,content) {
if (err) {
reject(err);
} else {
resolve(content);
};
});
});
};

exports.formatMessage = formatMessage;

  完成这节的代码后,当关注微信测试公众号的时候,会自动回复『你好,同学!』的提示信息。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读