1. 程式人生 > >API返回XML文件的解析並取值

API返回XML文件的解析並取值

呼叫一些API介面的時候,會返回XML或json格式的文件,如果API返回的是XML的文件,可以嘗試這樣來解析,以百度天氣的API為例,下面的程式碼是從訪問到接受返回的資料到解析。
百度天氣的API:http://api.map.baidu.com/telematics/v3/weather?location=武漢&ak=8IoIaU655sQrs95uMWRWPDIa
訪問它會返回這樣的資料,是XML格式。
百度天氣API返回的資料

下面就是完整的程式碼。
第一種:這種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的解析