API返回XML文档的解析并取值

调用一些API接口的时候,会返回XML或json格式的文档,如果API返回的是XML的文档,可以尝试这样来解析,以百度天气的API为例,下面的代码是从访问到接受返回的数据到解析。
百度天气的API:http://api.map.baidu.com/telematics/v3/weather?location=武汉&ak=8IoIaU655sQrs95uMWRWPDIa
访问它会返回这样的数据,是XML格式。
API返回XML文档的解析并取值_第1张图片

下面就是完整的代码。
第一种:这种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返回的
API返回XML文档的解析并取值_第2张图片
这种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的解析

你可能感兴趣的:(网页开发)