C#动态生成XML
来源:互联网 发布:调查问卷软件 编辑:程序博客网 时间:2024/05/16 12:53
BookInfo.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace MyTest.Model{ /// <summary> /// 图书信息实体类 /// </summary> public class BookInfo { public int BookId { set; get; } //图书ID public string Title { set; get; } //图书名称 public string Category { set; get; } //图书分类 public string Author { set; get; } //图书作者 public DateTime PublishDate { set; get; } //出版时间 public Double Price { set; get; } //销售价格 } }
XmlHelper.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.IO;using System.Text;using MyTest.Model;using System.Xml;namespace MyTest{ public class XmlHelper { #region 方法1:使用StringBuilder拼接XML /// <summary> /// 创建图书信息XML,保存xml文件 /// </summary> public void CreateBookXML(string fileName) { StringBuilder xmlResult = new StringBuilder("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); List<BookInfo> bookList = GetBookList(); //获取图书列表 if (bookList != null && bookList.Count > 0) { xmlResult.Append("<bookstore>"); foreach (BookInfo book in bookList) { xmlResult.AppendFormat("<book id=\"{0}\" category=\"{1}\">", book.BookId, book.Category); xmlResult.AppendFormat("<title>{0}</title>", book.Title); xmlResult.AppendFormat("<author>{0}</author>", book.Author); xmlResult.AppendFormat("<publishDate>{0}</publishDate>", book.PublishDate.ToString("yyyy-MM-dd")); xmlResult.AppendFormat("<price>{0}</price>", book.Price); xmlResult.Append("</book>"); } xmlResult.Append("</bookstore>"); } //写入文件 try { //1.创建文件流 FileStream fileStream = new FileStream(fileName, FileMode.Create); //2.创建写入器 StreamWriter streamWriter = new StreamWriter(fileStream); //3.将内容写入文件 streamWriter.WriteLine(xmlResult); //4.关闭写入器 streamWriter.Close(); //5.关闭文件流 fileStream.Close(); } catch (Exception e) { } } /// <summary> /// 创建图书信息XML,返回XML字符串 /// </summary> public string CreateBookXML() { StringBuilder xmlResult = new StringBuilder("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); List<BookInfo> bookList = GetBookList(); //获取图书列表 if (bookList != null && bookList.Count > 0) { xmlResult.Append("<bookstore>"); foreach (BookInfo book in bookList) { xmlResult.AppendFormat("<book id=\"{0}\" category=\"{1}\">", book.BookId, book.Category); xmlResult.AppendFormat("<title>{0}</title>", book.Title); xmlResult.AppendFormat("<author>{0}</author>", book.Author); xmlResult.AppendFormat("<publishDate>{0}</publishDate>", book.PublishDate.ToString("yyyy-MM-dd")); xmlResult.AppendFormat("<price>{0}</price>", book.Price); xmlResult.Append("</book>"); } xmlResult.Append("</bookstore>"); } return xmlResult.ToString(); } #endregion #region 方法2:使用XmlTextWriter类创建XML /// <summary> /// 创建图书信息XML /// </summary> /// <param name="fileName"></param> public void CreateBookXMLOther(string fileName) { try { FileStream fileStream = new FileStream(fileName, FileMode.Create); XmlTextWriter writer = new XmlTextWriter(fileStream, Encoding.UTF8); List<BookInfo> bookList = GetBookList(); //获取图书列表 if (bookList != null && bookList.Count > 0) { writer.WriteStartDocument(); writer.WriteStartElement("bookstore"); //创建父节点 foreach (BookInfo book in bookList) { writer.WriteStartElement("book"); //创建子节点 writer.WriteAttributeString("id", book.BookId.ToString()); //添加属性 writer.WriteAttributeString("category", book.Category); //图书名称节点 writer.WriteStartElement("title"); writer.WriteValue(book.Title); //节点赋值 writer.WriteEndElement(); //图书作者节点 writer.WriteStartElement("author"); writer.WriteValue(book.Author); writer.WriteEndElement(); //出版时间节点 writer.WriteStartElement("publishDate"); writer.WriteValue(book.PublishDate.ToString("yyyy-MM-dd")); writer.WriteEndElement(); //销售价格节点 writer.WriteStartElement("price"); writer.WriteValue(book.Price); writer.WriteEndElement(); writer.WriteEndElement(); //子节点结束 } writer.WriteEndElement(); //父节点结束 } writer.WriteEndDocument(); writer.Close(); fileStream.Close(); } catch (Exception e) { } } #endregion /// <summary> /// 获取图书列表,添加模拟数据 /// </summary> /// <returns></returns> public List<BookInfo> GetBookList() { List<BookInfo> bookList = new List<BookInfo>(); BookInfo book1 = new BookInfo() { BookId = 1, Category = "CHILDREN", Title = "H哈利波特", Author = "J K.罗琳", PublishDate = new DateTime(2005, 08, 15), Price = 29.99 }; bookList.Add(book1); BookInfo book2 = new BookInfo() { BookId = 2, Category = "WEB", Title = "学习XML", Author = "艾瑞克.雷", PublishDate = new DateTime(2003, 10, 18), Price = 39.95 }; bookList.Add(book2); return bookList; } }}
Index.aspx.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Text;namespace MyTest{ public partial class Index : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //string path = Server.MapPath("~/file/webinfo.xml"); string xmlStr= new XmlHelper().CreateBookXML(); Response.ContentType = "text/xml"; Response.Charset = "UTF-8"; Response.Write(xmlStr); Response.End(); } }}
运行结果如图:
UnifiedOrder.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace MyTest.WechatModel{ /// <summary> /// 微信统一接口请求实体对象 /// </summary> [Serializable] public class UnifiedOrder { /// <summary> /// 公共号ID(微信分配的公众账号 ID) /// </summary> public string appid = ""; /// <summary> /// 商户号(微信支付分配的商户号) /// </summary> public string mch_id = ""; /// <summary> /// 微信支付分配的终端设备号 /// </summary> public string device_info = ""; /// <summary> /// 随机字符串,不长于 32 位 /// </summary> public string nonce_str = ""; /// <summary> /// 签名 /// </summary> public string sign = ""; /// <summary> /// 商品描述 /// </summary> public string body = ""; /// <summary> /// 附加数据,原样返回 /// </summary> public string attach = ""; /// <summary> /// 商户系统内部的订单号,32个字符内、可包含字母,确保在商户系统唯一,详细说明 /// </summary> public string out_trade_no = ""; /// <summary> /// 订单总金额,单位为分,不能带小数点 /// </summary> public int total_fee = 0; /// <summary> /// 终端IP /// </summary> public string spbill_create_ip = ""; /// <summary> /// 订 单 生 成 时 间 , 格 式 为yyyyMMddHHmmss,如 2009 年12 月 25 日 9 点 10 分 10 秒表示为 20091225091010。时区为 GMT+8 beijing。该时间取自商户服务器 /// </summary> public string time_start = ""; /// <summary> /// 交易结束时间 /// </summary> public string time_expire = ""; /// <summary> /// 商品标记 商品标记,该字段不能随便填,不使用请填空,使用说明详见第 5 节 /// </summary> public string goods_tag = ""; /// <summary> /// 接收微信支付成功通知 /// </summary> public string notify_url = ""; /// <summary> /// JSAPI、NATIVE、APP /// </summary> public string trade_type = ""; /// <summary> /// 用户标识 trade_type 为 JSAPI时,此参数必传 /// </summary> public string openid = ""; /// <summary> /// 只在 trade_type 为 NATIVE时需要填写。 /// </summary> public string product_id = ""; }}
QueryOrder.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace MyTest.WechatModel{ /// <summary> /// 微信订单查询接口请求实体对象 /// </summary> [Serializable] public class QueryOrder { /// <summary> /// 公共号ID(微信分配的公众账号 ID) /// </summary> public string appid = ""; /// <summary> /// 商户号(微信支付分配的商户号) /// </summary> public string mch_id = ""; /// <summary> /// 微信订单号,优先使用 /// </summary> public string transaction_id = ""; /// <summary> /// 商户系统内部订单号 /// </summary> public string out_trade_no = ""; /// <summary> /// 随机字符串,不长于 32 位 /// </summary> public string nonce_str = ""; /// <summary> /// 签名,参与签名参数:appid,mch_id,transaction_id,out_trade_no,nonce_str,key /// </summary> public string sign = ""; }}
OrderDetail.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace MyTest.WechatModel{ /// <summary> /// 微信订单明细实体对象 /// </summary> [Serializable] public class OrderDetail { /// <summary> /// 返回状态码,SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看trade_state来判断 /// </summary> public string return_code = ""; /// <summary> /// 返回信息返回信息,如非空,为错误原因 签名失败 参数格式校验错误 /// </summary> public string return_msg = ""; /// <summary> /// 公共号ID(微信分配的公众账号 ID) /// </summary> public string appid = ""; /// <summary> /// 商户号(微信支付分配的商户号) /// </summary> public string mch_id = ""; /// <summary> /// 随机字符串,不长于32位 /// </summary> public string nonce_str = ""; /// <summary> /// 签名 /// </summary> public string sign = ""; /// <summary> /// 业务结果,SUCCESS/FAIL /// </summary> public string result_code = ""; /// <summary> /// 错误代码 /// </summary> public string err_code = ""; /// <summary> /// 错误代码描述 /// </summary> public string err_code_des = ""; /// <summary> /// 交易状态 ///SUCCESS—支付成功 ///REFUND—转入退款 ///NOTPAY—未支付 ///CLOSED—已关闭 ///REVOKED—已撤销 ///USERPAYING--用户支付中 ///NOPAY--未支付(输入密码或确认支付超时) PAYERROR--支付失败(其他原因,如银行返回失败) /// </summary> public string trade_state = ""; /// <summary> /// 微信支付分配的终端设备号 /// </summary> public string device_info = ""; /// <summary> /// 用户在商户appid下的唯一标识 /// </summary> public string openid = ""; /// <summary> /// 用户是否关注公众账号,Y-关注,N-未关注,仅在公众账号类型支付有效 /// </summary> public string is_subscribe = ""; /// <summary> /// 交易类型,JSAPI、NATIVE、MICROPAY、APP /// </summary> public string trade_type = ""; /// <summary> /// 银行类型,采用字符串类型的银行标识 /// </summary> public string bank_type = ""; /// <summary> /// 订单总金额,单位为分 /// </summary> public string total_fee = ""; /// <summary> /// 现金券支付金额<=订单总金额,订单总金额-现金券金额为现金支付金额 /// </summary> public string coupon_fee = ""; /// <summary> /// 货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY /// </summary> public string fee_type = ""; /// <summary> /// 微信支付订单号 /// </summary> public string transaction_id = ""; /// <summary> /// 商户系统的订单号,与请求一致。 /// </summary> public string out_trade_no = ""; /// <summary> /// 商家数据包,原样返回 /// </summary> public string attach = ""; /// <summary> /// 支付完成时间,格式为yyyyMMddhhmmss,如2009年12月27日9点10分10秒表示为20091227091010。 /// 时区为GMT+8 beijing。该时间取自微信支付服务器 /// </summary> public string time_end = ""; }}
EnterParam.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace MyTest.WechatModel{ /// <summary> /// 微信接入参数 /// </summary> public class EnterParam { /// <summary> /// 是否加密 /// </summary> public bool IsAes { get; set; } /// <summary> /// 接入token /// </summary> public string token { get; set; } /// <summary> ///微信appid /// </summary> public string appid { get; set; } /// <summary> /// 加密密钥 /// </summary> public string EncodingAESKey { get; set; } }}
WechatXmlHelper.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.IO;using System.Text;using MyTest.Model;using System.Xml;using System.Collections;using MyTest.WechatModel;namespace MyTest{ public class WechatXmlHelper { /// <summary> /// 微信统一下单接口xml参数整理 /// </summary> /// <param name="order">微信支付参数实例</param> /// <param name="key">密钥</param> /// <returns></returns> protected string getUnifiedOrderXml(UnifiedOrder order, string key) { string return_string = string.Empty; SortedDictionary<string, string> sParams = new SortedDictionary<string, string>(); sParams.Add("appid", order.appid); sParams.Add("attach", order.attach); sParams.Add("body", order.body); sParams.Add("device_info", order.device_info); sParams.Add("mch_id", order.mch_id); sParams.Add("nonce_str", order.nonce_str); sParams.Add("notify_url", order.notify_url); sParams.Add("openid", order.openid); sParams.Add("out_trade_no", order.out_trade_no); sParams.Add("spbill_create_ip", order.spbill_create_ip); sParams.Add("total_fee", order.total_fee.ToString()); sParams.Add("trade_type", order.trade_type); order.sign = "0ca175b9c0f726a831d895e269332461"; //getsign(sParams, key); sParams.Add("sign", order.sign); //拼接成XML请求数据 StringBuilder sbPay = new StringBuilder(); foreach (KeyValuePair<string, string> k in sParams) { if (k.Key == "attach" || k.Key == "body" || k.Key == "sign") { sbPay.Append("<" + k.Key + "><![CDATA[" + k.Value + "]]></" + k.Key + ">"); } else { sbPay.Append("<" + k.Key + ">" + k.Value + "</" + k.Key + ">"); } } return_string = string.Format("<xml>{0}</xml>", sbPay.ToString()); byte[] byteArray = Encoding.UTF8.GetBytes(return_string); return_string = Encoding.GetEncoding("GBK").GetString(byteArray); return return_string; } /// <summary> /// 微信订单查询接口XML参数整理 /// </summary> /// <param name="queryorder">微信订单查询参数实例</param> /// <param name="key">密钥</param> /// <returns></returns> protected string getQueryOrderXml(QueryOrder queryorder, string key) { string return_string = string.Empty; SortedDictionary<string, string> sParams = new SortedDictionary<string, string>(); sParams.Add("appid", queryorder.appid); sParams.Add("mch_id", queryorder.mch_id); sParams.Add("transaction_id", queryorder.transaction_id); sParams.Add("out_trade_no", queryorder.out_trade_no); sParams.Add("nonce_str", queryorder.nonce_str); queryorder.sign = "0ca175b9c0f726a831d895e269332461"; //getsign(sParams, key); sParams.Add("sign", queryorder.sign); //拼接成XML请求数据 StringBuilder sbPay = new StringBuilder(); foreach (KeyValuePair<string, string> k in sParams) { if (k.Key == "attach" || k.Key == "body" || k.Key == "sign") { sbPay.Append("<" + k.Key + "><![CDATA[" + k.Value + "]]></" + k.Key + ">"); } else { sbPay.Append("<" + k.Key + ">" + k.Value + "</" + k.Key + ">"); } } return_string = string.Format("<xml>{0}</xml>", sbPay.ToString().TrimEnd(',')); return return_string; } //输出XML public string parseXML(Hashtable hashT) { Hashtable parameters = hashT; StringBuilder sb = new StringBuilder(); sb.Append("<xml>"); int iIsNumber = 0; foreach (string k in parameters.Keys) { string v = (string)parameters[k]; if (int.TryParse(v, out iIsNumber)) { sb.Append("<" + k + ">" + v + "</" + k + ">"); } else { sb.Append("<" + k + "><![CDATA[" + v + "]]></" + k + ">"); } } sb.Append("</xml>"); return sb.ToString(); } /// <summary> /// 返回微信POST过来的结果(微信信息返回) /// </summary> /// <param name="weixinXML">微信服务器post过来的数据</param> private string ResponseMsg(string weixinXML) { Hashtable ht = new Hashtable(); //GetXmlName(weixinXML); //这里写你的返回信息代码 StringBuilder sb = new StringBuilder(); sb.Append("<xml>"); sb.Append("<ToUserName><![CDATA[" + ht["FromUserName"].ToString() + "]]></ToUserName>"); sb.Append("<FromUserName><![CDATA[" + ht["ToUserName"].ToString() + "]]></FromUserName>"); sb.Append("<CreateTime>" + ht["CreateTime"].ToString() + "</CreateTime>"); sb.Append("<MsgType><![CDATA[" + ht["MsgType"].ToString() + "]]></MsgType>"); sb.Append("<Content><![CDATA[" + ht["Content"].ToString() + "]]></Content>"); sb.Append("</xml>"); return sb.ToString(); } /// <summary> /// 开发者微信号 /// </summary> public string ToUserName { get; set; } /// <summary> /// 发送方帐号(一个OpenID) /// </summary> public string FromUserName { get; set; } /// <summary> /// 消息创建时间 (整型) /// </summary> public string CreateTime { get; set; } /// <summary> /// 消息类型 /// </summary> //public MsgType MsgType { get; set; } //public void ResText(EnterParam param, string content) //{ // StringBuilder resxml = new StringBuilder(string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>{2}</CreateTime>", FromUserName, ToUserName, Utils.ConvertDateTimeInt(DateTime.Now))); // resxml.AppendFormat("<MsgType><![CDATA[text]]></MsgType><Content><![CDATA[{0}]]></Content><FuncFlag>0</FuncFlag></xml>", content); //} /// <summary> /// 回复消息(音乐) /// </summary> //public void ResMusic(EnterParam param, Music mu) //{ // StringBuilder resxml = new StringBuilder(string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>{2}</CreateTime>", FromUserName, ToUserName, Utils.ConvertDateTimeInt(DateTime.Now))); // resxml.Append(" <MsgType><![CDATA[music]]></MsgType>"); // resxml.AppendFormat("<Music><Title><![CDATA[{0}]]></Title><Description><![CDATA[{1}]]></Description>", mu.Title, mu.Description); // resxml.AppendFormat("<MusicUrl><![CDATA[http://{0}{1}]]></MusicUrl><HQMusicUrl><![CDATA[http://{2}{3}]]></HQMusicUrl></Music><FuncFlag>0</FuncFlag></xml>", VqiRequest.GetCurrentFullHost(), mu.MusicUrl, VqiRequest.GetCurrentFullHost(), mu.HQMusicUrl); //} //public void ResVideo(EnterParam param, Video v) //{ // StringBuilder resxml = new StringBuilder(string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>{2}</CreateTime>", FromUserName, ToUserName, Utils.ConvertDateTimeInt(DateTime.Now))); // resxml.Append(" <MsgType><![CDATA[video]]></MsgType>"); // resxml.AppendFormat("<Video><MediaId><![CDATA[{0}]]></MediaId>", v.media_id); // resxml.AppendFormat("<Title><![CDATA[{0}]]></Title>", v.title); // resxml.AppendFormat("<Description><![CDATA[{0}]]></Description></Video></xml>", v.description); //} /// <summary> /// 回复消息(图片) /// </summary> //public void ResPicture(EnterParam param, Picture pic, string domain) //{ // StringBuilder resxml = new StringBuilder(string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>{2}</CreateTime>", FromUserName, ToUserName, Utils.ConvertDateTimeInt(DateTime.Now))); // resxml.Append(" <MsgType><![CDATA[image]]></MsgType>"); // resxml.AppendFormat("<PicUrl><![CDATA[{0}]]></PicUrl></xml>", domain + pic.PictureUrl); //} /// <summary> /// 回复消息(图文列表) /// </summary> /// <param name="param"></param> /// <param name="art"></param> //public void ResArticles(EnterParam param, List<Articles> art) //{ // StringBuilder resxml = new StringBuilder(string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>{2}</CreateTime>", FromUserName, ToUserName, Utils.ConvertDateTimeInt(DateTime.Now))); // resxml.AppendFormat("<MsgType><![CDATA[news]]></MsgType><ArticleCount>{0}</ArticleCount><Articles>", art.Count); // for (int i = 0; i < art.Count; i++) // { // resxml.AppendFormat("<item><Title><![CDATA[{0}]]></Title> <Description><![CDATA[{1}]]></Description>", art[i].Title, art[i].Description); // resxml.AppendFormat("<PicUrl><![CDATA[{0}]]></PicUrl><Url><![CDATA[{1}]]></Url></item>", art[i].PicUrl.Contains("http://") ? art[i].PicUrl : "http://" + VqiRequest.GetCurrentFullHost() + art[i].PicUrl, art[i].Url.Contains("http://") ? art[i].Url : "http://" + VqiRequest.GetCurrentFullHost() + art[i].Url); // } // resxml.Append("</Articles><FuncFlag>0</FuncFlag></xml>"); //} }}using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.IO;using System.Text;using MyTest.Model;using System.Xml;using System.Collections;using MyTest.WechatModel;namespace MyTest{ public class WechatXmlHelper { /// <summary> /// 微信统一下单接口xml参数整理 /// </summary> /// <param name="order">微信支付参数实例</param> /// <param name="key">密钥</param> /// <returns></returns> protected string getUnifiedOrderXml(UnifiedOrder order, string key) { string return_string = string.Empty; SortedDictionary<string, string> sParams = new SortedDictionary<string, string>(); sParams.Add("appid", order.appid); sParams.Add("attach", order.attach); sParams.Add("body", order.body); sParams.Add("device_info", order.device_info); sParams.Add("mch_id", order.mch_id); sParams.Add("nonce_str", order.nonce_str); sParams.Add("notify_url", order.notify_url); sParams.Add("openid", order.openid); sParams.Add("out_trade_no", order.out_trade_no); sParams.Add("spbill_create_ip", order.spbill_create_ip); sParams.Add("total_fee", order.total_fee.ToString()); sParams.Add("trade_type", order.trade_type); order.sign = "0ca175b9c0f726a831d895e269332461"; //getsign(sParams, key); sParams.Add("sign", order.sign); //拼接成XML请求数据 StringBuilder sbPay = new StringBuilder(); foreach (KeyValuePair<string, string> k in sParams) { if (k.Key == "attach" || k.Key == "body" || k.Key == "sign") { sbPay.Append("<" + k.Key + "><![CDATA[" + k.Value + "]]></" + k.Key + ">"); } else { sbPay.Append("<" + k.Key + ">" + k.Value + "</" + k.Key + ">"); } } return_string = string.Format("<xml>{0}</xml>", sbPay.ToString()); byte[] byteArray = Encoding.UTF8.GetBytes(return_string); return_string = Encoding.GetEncoding("GBK").GetString(byteArray); return return_string; } /// <summary> /// 微信订单查询接口XML参数整理 /// </summary> /// <param name="queryorder">微信订单查询参数实例</param> /// <param name="key">密钥</param> /// <returns></returns> protected string getQueryOrderXml(QueryOrder queryorder, string key) { string return_string = string.Empty; SortedDictionary<string, string> sParams = new SortedDictionary<string, string>(); sParams.Add("appid", queryorder.appid); sParams.Add("mch_id", queryorder.mch_id); sParams.Add("transaction_id", queryorder.transaction_id); sParams.Add("out_trade_no", queryorder.out_trade_no); sParams.Add("nonce_str", queryorder.nonce_str); queryorder.sign = "0ca175b9c0f726a831d895e269332461"; //getsign(sParams, key); sParams.Add("sign", queryorder.sign); //拼接成XML请求数据 StringBuilder sbPay = new StringBuilder(); foreach (KeyValuePair<string, string> k in sParams) { if (k.Key == "attach" || k.Key == "body" || k.Key == "sign") { sbPay.Append("<" + k.Key + "><![CDATA[" + k.Value + "]]></" + k.Key + ">"); } else { sbPay.Append("<" + k.Key + ">" + k.Value + "</" + k.Key + ">"); } } return_string = string.Format("<xml>{0}</xml>", sbPay.ToString().TrimEnd(',')); return return_string; } //输出XML public string parseXML(Hashtable hashT) { Hashtable parameters = hashT; StringBuilder sb = new StringBuilder(); sb.Append("<xml>"); int iIsNumber = 0; foreach (string k in parameters.Keys) { string v = (string)parameters[k]; if (int.TryParse(v, out iIsNumber)) { sb.Append("<" + k + ">" + v + "</" + k + ">"); } else { sb.Append("<" + k + "><![CDATA[" + v + "]]></" + k + ">"); } } sb.Append("</xml>"); return sb.ToString(); } /// <summary> /// 返回微信POST过来的结果(微信信息返回) /// </summary> /// <param name="weixinXML">微信服务器post过来的数据</param> private string ResponseMsg(string weixinXML) { Hashtable ht = new Hashtable(); //GetXmlName(weixinXML); //这里写你的返回信息代码 StringBuilder sb = new StringBuilder(); sb.Append("<xml>"); sb.Append("<ToUserName><![CDATA[" + ht["FromUserName"].ToString() + "]]></ToUserName>"); sb.Append("<FromUserName><![CDATA[" + ht["ToUserName"].ToString() + "]]></FromUserName>"); sb.Append("<CreateTime>" + ht["CreateTime"].ToString() + "</CreateTime>"); sb.Append("<MsgType><![CDATA[" + ht["MsgType"].ToString() + "]]></MsgType>"); sb.Append("<Content><![CDATA[" + ht["Content"].ToString() + "]]></Content>"); sb.Append("</xml>"); return sb.ToString(); } /// <summary> /// 开发者微信号 /// </summary> public string ToUserName { get; set; } /// <summary> /// 发送方帐号(一个OpenID) /// </summary> public string FromUserName { get; set; } /// <summary> /// 消息创建时间 (整型) /// </summary> public string CreateTime { get; set; } /// <summary> /// 消息类型 /// </summary> //public MsgType MsgType { get; set; } //public void ResText(EnterParam param, string content) //{ // StringBuilder resxml = new StringBuilder(string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>{2}</CreateTime>", FromUserName, ToUserName, Utils.ConvertDateTimeInt(DateTime.Now))); // resxml.AppendFormat("<MsgType><![CDATA[text]]></MsgType><Content><![CDATA[{0}]]></Content><FuncFlag>0</FuncFlag></xml>", content); //} /// <summary> /// 回复消息(音乐) /// </summary> //public void ResMusic(EnterParam param, Music mu) //{ // StringBuilder resxml = new StringBuilder(string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>{2}</CreateTime>", FromUserName, ToUserName, Utils.ConvertDateTimeInt(DateTime.Now))); // resxml.Append(" <MsgType><![CDATA[music]]></MsgType>"); // resxml.AppendFormat("<Music><Title><![CDATA[{0}]]></Title><Description><![CDATA[{1}]]></Description>", mu.Title, mu.Description); // resxml.AppendFormat("<MusicUrl><![CDATA[http://{0}{1}]]></MusicUrl><HQMusicUrl><![CDATA[http://{2}{3}]]></HQMusicUrl></Music><FuncFlag>0</FuncFlag></xml>", VqiRequest.GetCurrentFullHost(), mu.MusicUrl, VqiRequest.GetCurrentFullHost(), mu.HQMusicUrl); //} //public void ResVideo(EnterParam param, Video v) //{ // StringBuilder resxml = new StringBuilder(string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>{2}</CreateTime>", FromUserName, ToUserName, Utils.ConvertDateTimeInt(DateTime.Now))); // resxml.Append(" <MsgType><![CDATA[video]]></MsgType>"); // resxml.AppendFormat("<Video><MediaId><![CDATA[{0}]]></MediaId>", v.media_id); // resxml.AppendFormat("<Title><![CDATA[{0}]]></Title>", v.title); // resxml.AppendFormat("<Description><![CDATA[{0}]]></Description></Video></xml>", v.description); //} /// <summary> /// 回复消息(图片) /// </summary> //public void ResPicture(EnterParam param, Picture pic, string domain) //{ // StringBuilder resxml = new StringBuilder(string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>{2}</CreateTime>", FromUserName, ToUserName, Utils.ConvertDateTimeInt(DateTime.Now))); // resxml.Append(" <MsgType><![CDATA[image]]></MsgType>"); // resxml.AppendFormat("<PicUrl><![CDATA[{0}]]></PicUrl></xml>", domain + pic.PictureUrl); //} /// <summary> /// 回复消息(图文列表) /// </summary> /// <param name="param"></param> /// <param name="art"></param> //public void ResArticles(EnterParam param, List<Articles> art) //{ // StringBuilder resxml = new StringBuilder(string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>{2}</CreateTime>", FromUserName, ToUserName, Utils.ConvertDateTimeInt(DateTime.Now))); // resxml.AppendFormat("<MsgType><![CDATA[news]]></MsgType><ArticleCount>{0}</ArticleCount><Articles>", art.Count); // for (int i = 0; i < art.Count; i++) // { // resxml.AppendFormat("<item><Title><![CDATA[{0}]]></Title> <Description><![CDATA[{1}]]></Description>", art[i].Title, art[i].Description); // resxml.AppendFormat("<PicUrl><![CDATA[{0}]]></PicUrl><Url><![CDATA[{1}]]></Url></item>", art[i].PicUrl.Contains("http://") ? art[i].PicUrl : "http://" + VqiRequest.GetCurrentFullHost() + art[i].PicUrl, art[i].Url.Contains("http://") ? art[i].Url : "http://" + VqiRequest.GetCurrentFullHost() + art[i].Url); // } // resxml.Append("</Articles><FuncFlag>0</FuncFlag></xml>"); //} }}
WechatXml.aspx.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Collections;namespace MyTest{ public partial class WechatXml : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Hashtable ht = new Hashtable(); ht.Add("Name", "wu"); ht.Add("Age", "27"); ht.Add("Country", "American"); ht.Add("Job", "NET高级开发"); ht.Add("Interesting", "电影,书籍"); WechatXmlHelper helper = new WechatXmlHelper(); string xmlStr = helper.parseXML(ht); Response.ContentType = "text/xml"; Response.Charset = "UTF-8"; Response.Write(xmlStr); Response.End(); } }}
运行结果如图:
阅读全文
0 0
- C#动态生成XML
- C#动态生成XML
- c#动态生成xml文件
- PHP动态生成xml
- XML动态的生成
- 动态生成xml
- 动态生成xml
- asp动态生成xml
- 动态生成XML
- 动态生成XML
- 动态生成XML文件
- 动态生成XML
- c# 生成 xml 文件
- C#生成XML文件
- C#生成XML文件
- C# 生成XML文档
- c#生成xml
- C# 生成XML
- POJ1066---Treasure Hunt (计算几何基础:线段相交)
- [未完待续][NOI2017模拟]大新闻
- Count Color POJ 2777
- MRP运行(MD01-MD03) MRP控制参数
- springboot集成security
- C#动态生成XML
- use tpm2-abrmd on RHEL7.3
- struts2文件上传Demo
- List object in Python
- LC的课后辅导 QDU
- ACM日记_17.5.01——矩阵快速幂整理(例题i:Fibonacci POJ
- Spring中Bean的简单属性注入
- 中文分词的python实现-基于HMM算法
- APC 基本概念及APC注入的实现(Ring3 + Ring0)----实现