解析消息
在解析消息之前,我们需要在index.js中引入一个解析消息的模块node-xml,通过该模块来解析消息。
var xml=require('node-xml');
如果我们发送给微信平台的消息为文本消息,则收到的消息格式如下:
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[this is a test]]></Content>
<MsgId>1234567890123456</MsgId>
</xml>
然后我们就通过node-xml模块来解析,解析的代码如下:
// 定义解析存储变量
var ToUserName="";
var FromUserName="";
var CreateTime="";
var MsgType="";
var Content="";
var tempName="";
//开始解析消息
var parse=new xml.SaxParser(function(cb){
cb.onStartElementNS(function(elem,attra,prefix,uri,namespaces){
tempName=elem;
});
cb.onCharacters(function(chars){
chars=chars.replace(/(^\s*)|(\s*$)/g, "");
if(tempName=="CreateTime"){
CreateTime=chars;
}
});
cb.onCdata(function(cdata){
if(tempName=="ToUserName"){
ToUserName=cdata;
}else if(tempName=="FromUserName"){
FromUserName=cdata;
}else if(tempName=="MsgType"){
MsgType=cdata;
}else if(tempName=="Content"){
Content=cdata;
}
console.log(tempName+":"+cdata);
});
cb.onEndElementNS(function(elem,prefix,uri){
tempName="";
});
cb.onEndDocument(function(){
//按收到的消息格式回复消息
});
});
parse.parseString(xmlStr);
通过以上代码的实现,这样收到的消息就解析完成了。 大家想了解更多收到数据的格式,请查看微信平台的官方文档 。