微信公众平台开发 互动版

解析消息

在解析消息之前,我们需要在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);

通过以上代码的实现,这样收到的消息就解析完成了。 大家想了解更多收到数据的格式,请查看微信平台的官方文档