首页 > 代码库 > 两种读取微信xml消息的方式比较
两种读取微信xml消息的方式比较
直接贴代码和结果。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Xml;using System.Xml.Serialization;using System.IO;using System.Diagnostics;namespace ConsoleApplication_xml{ [XmlRoot("xml")] public class WeChatMessage { [XmlElement("ToUserName")] public string ToUserName { get; set; } [XmlElement("FromUserName")] public string FromUserName { get; set; } [XmlElement("CreateTime")] public int CreateTime { get; set; } [XmlElement("MsgType")] public string MsgType { get; set; } [XmlElement("Content")] public string Content { get; set; } [XmlElement("MsgId")] public long? MsgId { get; set; } } public class Program { public static T FromXml<T>(Stream stream) { var serializer = new XmlSerializer(typeof(T)); return (T)serializer.Deserialize(stream); } static void Main(string[] args) { string xmlData = http://www.mamicode.com/@"<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> "; // first way Stopwatch watch1 = new Stopwatch(); watch1.Start(); XmlDocument doc = new XmlDocument(); doc.LoadXml(xmlData); string fromUser = doc.GetElementsByTagName("FromUserName")[0].InnerText; string toUser = doc.GetElementsByTagName("ToUserName")[0].InnerText; string msgType = doc.GetElementsByTagName("MsgType")[0].InnerText; string content = doc.GetElementsByTagName("Content")[0].InnerText; string createTime = doc.GetElementsByTagName("CreateTime")[0].InnerText; string msgId = doc.GetElementsByTagName("MsgId")[0].InnerText; watch1.Stop(); Console.WriteLine("first way, time = {0}", watch1.Elapsed); Console.WriteLine("fromUser = {0}, toUser = {1}, msgType = {2}, content = {3}, createTime = {4}, msgId = {5}", fromUser, toUser, msgType, content, createTime, msgId); Console.WriteLine("======"); // second way Stopwatch watch2 = new Stopwatch(); watch2.Start(); byte[] byteArray = Encoding.UTF8.GetBytes(xmlData); MemoryStream stream = new MemoryStream(byteArray); Stopwatch watch3 = new Stopwatch(); watch3.Start(); WeChatMessage message = FromXml<WeChatMessage>(stream); watch3.Stop(); watch2.Stop(); Console.WriteLine("second way, total time = {0}", watch2.Elapsed); Console.WriteLine("second way, stream time = {0}", watch3.Elapsed); Console.WriteLine("fromUser = {0}, toUser = {1}, msgType = {2}, content = {3}, createTime = {4}, msgId = {5}", message.FromUserName, message.ToUserName, message.MsgType, message.Content, message.CreateTime, message.MsgId); Console.ReadLine(); } }}
结果:
first way, time = 00:00:00.0005323fromUser = fromUser, toUser = toUser, msgType = text, content = this is a test,createTime = 1348831860, msgId = 1234567890123456======second way, total time = 00:00:00.1302524second way, stream time = 00:00:00.1302366fromUser = fromUser, toUser = toUser, msgType = text, content = this is a test,createTime = 1348831860, msgId = 1234567890123456
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。