团购API解析 c#实现

<response code="0" date="2011-07-10T18:36:03+08:00" message="Ok"><deals><deal><id>366723</id><deal_url>http://nj.meituan.com/deal/366723.html</deal_url><title>仅售99元!原价280元的首尔家韩国料理异域风情韩国料理4人套餐(石板炒鸡排+石板泡菜五花肉+石板烤鱿鱼+嫩豆腐汤+海带汤+土豆饼+海鲜葱饼+石锅拌饭+炒年糕+炒饭2份),另送小菜4份+生菜+烤肉酱4份,原“一只鸡”韩国料理上海路店。锅内的肉片“吱吱”冒烟,烤熟的浮香袅袅升烟,味蕾旅程瞬间开启,美食路上邂逅异域风情,约定首尔家,悸动相伴一路驰骋!</title><small_image_url>http://p1.meituan.net/120.76/deal/201107/08/_0708113345.jpg</small_image_url><medium_image_url>http://p0.meituan.net/200.121/deal/201107/08/_0708113345.jpg</medium_image_url><large_image_url>http://p1.meituan.net/deal/201107/08/_0708113345.jpg</large_image_url><division_id>nanjing</division_id><division_name>南京</division_name><division_lat>32.058365</division_lat><division_lng>118.796468</division_lng><division_timezone>Beijing Time</division_timezone><division_offset_gmt>288000</division_offset_gmt><vendor_id>首尔家韩国料理</vendor_id><vendor_name>首尔家韩国料理</vendor_name><vendor_website_url/><status>open</status><start_date>2011-07-10T00:00:00+08:00</start_date><end_date>2011-07-12T23:59:59+08:00</end_date><tipped>true</tipped><tipping_point>10</tipping_point><tipped_date>2011-07-10T07:30:32+08:00</tipped_date><sold_out>false</sold_out><quantity_sold>100</quantity_sold><price>99</price><value>280</value><discount_amount>181</discount_amount><discount_percent>3.5折</discount_percent><areas> </areas><conditions><limited_quantity>true</limited_quantity><minimum_purchase>1</minimum_purchase><maximum_purchase>100</maximum_purchase><expiration_date>2011-09-10T23:59:59+08:00</expiration_date><details><detail>有效期截止至2011年9月10日; 自2011年7月13日起接待; 营业时间:11:00-凌晨4:00; 请提前1-2天致电025-83205515预约; 不可同时享受店内其他优惠; </detail></details></conditions></deal>
上面是美团网提供的API借口,可以看出是一XML文档形式存在的。主要标签结构如下

<response>

<deals>

<deal>

<title></title>

<deal_url></deal_url>

......................

每则团购信息存放在这里,里面有title,deal_url等相关信息标签

</deal>

<deal>


</deal>

。。。。。。


</deals>

</response>

我们主要做的就是解析他提供的XML文档,读取出我们所需要的团购信息存入相应变量中即可

1.设计存放我们需要的团购信息的数据结构

public class Deal
{
public string Title;
public string ImageUrl;
public string price;
public string value;
public string DealUrl;
}

这个具体可以根据实际需要的内容自行设计~~

2.读取美团网提供的XML文档

XmlTextReader Reader = new XmlTextReader("http://www.meituan.com/api/v1/nanjing/deals");
// XmlValidatingReader Valid = new XmlValidatingReader(Reader);
// Valid.ValidationType = ValidationType.None;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Reader);
XmlNode ResponseNode = FoundChildNode(xmlDoc, "response");
XmlNode DealsNode = FoundChildNode(ResponseNode, "deals");
List<Deal> Deal = new List<Deal>();
for (int i = 0; i < DealsNode.ChildNodes.Count; i++)
{
switch (DealsNode.ChildNodes[i].Name)
{
case "deal":
{
Deal temp=getRssItem(DealsNode.ChildNodes[i]);
Deal.Add(temp);
break;
}
}
}

其中FoundChildNode:找到提供结点的相应子节点

getRssItem:找到提供结点所有的子节点,大家可以自己去试着去实现,也可以参考我的,我会在文章最后提供我的整个源码

下面的是我写的源码,我是做成Web Server的,供大家参考下吧:

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.Xml; namespace WebApplication1 { /// <summary> /// Rss 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 // [System.Web.Script.Services.ScriptService] public class Rss : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World"; } [WebMethod] public List<Deal> ReadXml() { XmlTextReader Reader = new XmlTextReader("http://www.meituan.com/api/v1/nanjing/deals"); // XmlValidatingReader Valid = new XmlValidatingReader(Reader); // Valid.ValidationType = ValidationType.None; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(Reader); XmlNode ResponseNode = FoundChildNode(xmlDoc, "response"); XmlNode DealsNode = FoundChildNode(ResponseNode, "deals"); List<Deal> Deal = new List<Deal>(); for (int i = 0; i < DealsNode.ChildNodes.Count; i++) { switch (DealsNode.ChildNodes[i].Name) { case "deal": { Deal temp=getRssItem(DealsNode.ChildNodes[i]); Deal.Add(temp); break; } } } return Deal; } private XmlNode FoundChildNode(XmlNode Node, string Name) { XmlNode childlNode = null; for (int i = 0; i < Node.ChildNodes.Count; i++) { if (Node.ChildNodes[i].Name == Name && Node.ChildNodes[i].ChildNodes.Count > 0) { childlNode = Node.ChildNodes[i]; return childlNode; } } return childlNode; } private Deal getRssItem(XmlNode Node) { Deal item = new Deal(); for (int i = 0; i < Node.ChildNodes.Count; i++) { if (Node.ChildNodes[i].Name == "title") { item.Title = Node.ChildNodes[i].InnerText; } else if (Node.ChildNodes[i].Name == "deal_url") { item.DealUrl = Node.ChildNodes[i].InnerText; } else if (Node.ChildNodes[i].Name == "medium_image_url") { item.ImageUrl = Node.ChildNodes[i].InnerText; } else if (Node.ChildNodes[i].Name == "price") { item.price = Node.ChildNodes[i].InnerText; } else if (Node.ChildNodes[i].Name == "value") { item.value = Node.ChildNodes[i].InnerText; } } return item; } /// <summary> /// 数据成员 /// </summary> public class Deal { public string Title; public string ImageUrl; public string price; public string value; public string DealUrl; } } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值