调用一些API接口的时候,会返回XML或json格式的文档,如果API返回的是XML的文档,可以尝试这样来解析,以百度天气的API为例,下面的代码是从访问到接受返回的数据到解析。
百度天气的API:
http://api.map.baidu.com/telematics/v3/weather?location=
武汉&ak=8IoIaU655sQrs95uMWRWPDIa
访问它会返回这样的数据,是XML格式。
下面就是完整的代码。
第一种:这种XML有很多节点,父节点,子节点。读取子节点的时候,用下面的代码。
private string ReWeather()
{
string url =
"http://api.map.baidu.com/telematics/v3/weather?location=武汉&ak=8IoIaU655sQrs95uMWRWPDIa";
WebRequest HttpWReq = (HttpWebRequest)WebRequest.Create(url);
HttpWReq.Method = "GET";//设置页面请求的方式为GET,可以是POST,试情况而定
HttpWebResponse HttpWResp = (HttpWebResponse)HttpWReq.GetResponse();
StreamReader sw = new StreamReader(HttpWResp.GetResponseStream());//将返回的结果读入流
string xmlContent = sw.ReadToEnd(); //将流从头到尾读完转换成字符串
sw.Close();//关闭流读取
XmlDocument doc = new XmlDocument();//新建一个XML文档
doc.LoadXml(xmlContent);//将字符串转换成XML文档
XmlNodeList weather_nodes = doc.GetElementsByTagName("weather");//读取XML文档的父节点
XmlNodeList wind_nodes = doc.GetElementsByTagName("wind");
XmlNodeList temperature_nodes = doc.GetElementsByTagName("temperature");
XmlNodeList desNodeList = doc.GetElementsByTagName("des");
XmlNode today_weather_node = weather_nodes[0];//读取某一父节点下的子节点
XmlNode today_wind_node = wind_nodes[0];
XmlNode today_temperature_node = temperature_nodes[0];
XmlNode desNode1 = desNodeList[0];
XmlNode desNode2 = desNodeList[5];
return today_weather_node.InnerText + " " + today_wind_node.InnerText + " " +
today_temperature_node.InnerText + "。" + desNode1.InnerText +
desNode2.InnerText;
}
第二种:简单的XML文档,如微信API返回的
这种XML没有节点,我们直接读取想要的字段的值。
代码如下,postStr就是返回的XML字符串,RequestXML是一个有很多字段属性的类:
public void Handle(string postStr)
{
//封装请求类
XmlDocument doc = new XmlDocument();
doc.LoadXml(postStr);
XmlElement rootElement = doc.DocumentElement;//应该是让rootElement这个对象可以访问doc的单行
//MsgType
XmlNode MsgType = rootElement.SelectSingleNode("MsgType");
//接收的值--->接收消息类(也称为消息推送)
RequestXML requestXML = new RequestXML();
requestXML.ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText;//选择单行,并转换成字符串
requestXML.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText;
requestXML.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText;
requestXML.MsgType = MsgType.InnerText;}
以上就是对API的调用,接受返回的数据,读取返回的数据,并对Xml的解析
版权声明:本文为hezepeng1996原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。