注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

扶红星的博客

生活本无味,尝试的多了也便五味俱全了。

 
 
 

日志

 
 

.net生成、解析、处理xml相关数据的实例  

2013-05-23 23:39:44|  分类: 知识梳理 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

本文是根据淘宝开放平台接口http://api.taobao.com/apidoc/api.htm?spm=0.0.0.0.BH5S9u&path=cid:4-apiId:18实例执行操作的;

在.net开发平台上随便创建一个web应用程序,现执行代码如下:

1.创建一个类文件,执行以下操作:

public static stringcounts = "";//定义一个公共变量用来保存一定规则下的所有宝贝数量

public staticDataTableGetData(string keys,string pageno)
    {
        SortedList<string, string> sorts = new SortedList<string, string>();
        sorts.Add("order_by", "list_time:desc");//非必须
        sorts.Add("q", keys);//搜索字段,非必须
        sorts.Add("page_no", pageno);//非必须
        System.Xml.XmlDocument myXML = GetDocument(sorts);//这里可以通过myXML.InnerXml打印输出生成的xml字符串原型结构

示例Xml:

.net生成、解析、处理xml相关数据的实例 - 盛情渊 - 南宫云遥的博客


        DataTable dt = new DataTable();
        dt.Columns.Add("新款编号"); //cid
        dt.Columns.Add("新款标题");//title
        dt.Columns.Add("图片路径");//pic_url
        dt.Columns.Add("新款价格");//price

        XmlNode xn = myXML.SelectSingleNode("items_onsale_get_response");
        DataRow dr = null;
        if (xn != null)
        {
            foreach (XmlNode xmlnode in xn.SelectNodes("items/item"))//将要解析的xml字符串中的每一个字节里面的数据以数据行的形式保存下来
            {
                dr = dt.NewRow();
                dr["新款编号"] = xmlnode.SelectSingleNode("cid") != null ? xmlnode.SelectSingleNode("cid").InnerXml.ToString() : "";
                dr["新款标题"] = xmlnode.SelectSingleNode("title") != null ? xmlnode.SelectSingleNode("title").InnerXml.ToString() : "";
                dr["图片路径"] = xmlnode.SelectSingleNode("pic_url") != null ? xmlnode.SelectSingleNode("pic_url").InnerXml.ToString() : "";
                dr["新款价格"] = xmlnode.SelectSingleNode("price") != null ? xmlnode.SelectSingleNode("price").InnerXml.ToString() : "";
                dt.Rows.Add(dr);
            }
        }
        counts = xn.SelectSingleNode("total_results").InnerXml.ToString();//获取该搜索字段下的总宝贝数量,继而存储到定义的公共变量中
        return dt;
    }
    public static XmlDocument GetDocument(SortedList<string, string> sort)
    {
        string timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
        SortedList<string, string> sorttwo = new SortedList<string, string>();
        sorttwo.Add("fields", "approve_status,num_iid,title,nick,type,cid,pic_url,num,list_time,price,delist_time,seller_cids");//获取所有分类或是对应分类的所有宝贝中需返回的字段列表
        sorttwo.Add("nick", "我是阿卡");//店铺名称
        sorttwo.Add("method", "taobao.items.onsale.get");//API接口名称
        sorttwo.Add("session", "6101c09694fe3abbe162ee6e0d3e43e088e0487ccfe166212333767");//TOP分配给用户的SessionKey,通过登陆授权获取。某个API是否需要传入session参数,需参考此API的API用户授权类型
        sorttwo.Add("timestamp", timestamp);
        sorttwo.Add("format", "xml");
        sorttwo.Add("app_key", "12004298");//TOP分配给应用的AppKey
        sorttwo.Add("page_size", "8");
        sorttwo.Add("v", "2.0");
        if (sort.Count > 0)
        {
            foreach (KeyValuePair<string, string> item in sort)
            {
                sorttwo.Add(item.Key, item.Value);
            }
        }
        StringBuilder sb = new StringBuilder();
        string str = "104136f1b4dfaa04c02c9d0e45c2d19b";
        sb.Append(str);
        foreach (KeyValuePair<string, string> item in sorttwo)
        {
            sb.Append(item.Key + item.Value);
        }
        sorttwo.Add("sign", FormsAuthentication.HashPasswordForStoringInConfigFile(sb.ToString(), "MD5").ToUpper());//对字符串进行md5加密
        string URL = "http://gw.api.taobao.com/router/rest?";
        StringBuilder sbtwo = new StringBuilder();
        foreach (KeyValuePair<string, string> item in sorttwo)
        {
            sbtwo.Append(item.Key + "=" + System.Web.HttpUtility.UrlEncode(item.Value, System.Text.Encoding.UTF8) + "&");
        }
        URL += sbtwo.ToString().TrimEnd(new char[] { '&' });
        WebRequest wbr = WebRequest.Create(new Uri(URL));
        wbr.ContentType = "application/x-www-form-urlencoded";
        wbr.Method = "POST";
        XmlDocument XML = new XmlDocument();
        XML.Load(((WebResponse)wbr.GetResponse()).GetResponseStream());
        return XML;

    }


2.可以在一个前台页面里面拖拉一个GridView控件继而执行后台操作利用DataTable dt = OpenData.GetData("新款", "2");
       // Label1.Text = "共搜索出符合条件的宝贝数量为:" + OpenData.counts + "个";
        GridView1.DataSource = dt;
        GridView1.DataBind();对解析出来的数据进行呈现
  评论这张
 
阅读(307)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017