前面已經給大家介紹了在設計天氣預報demo中如何設計界面和從網絡天氣API接口中獲取天氣數據,但是實際應用中我們可能只需要非常少的一部分天氣數據,并且能夠見這部分數據提取出來進行單獨的顯示或者應用,如在你的DIY中你可能只需要在界面中顯示一些指數提示,或者只需要簡單的天氣狀態等,這時候我們就需要對獲取的數據進行解析了,今天這篇blog中將進一步教大家如何對獲取到的XML格式的天氣數據進行解析。
下圖是天氣XML數據格式,其實XML的語法非常簡單,主要由標簽和內容組成,標簽是由起始標簽和結尾標簽組成,并且可以進行嵌套,這樣在解析的過程中,我們通常可以通過判斷是否是起始標簽,然后讀入數據即可,采用循環或者遞歸的方法都可以完成對xml的解析。
目前對于XML的解析,已經有很多組件接口可以直接調用,而不需要我們再去從最底層的字符匹配,標簽匹配等去編程了,我們只需要掌握這些接口的調用即可,在pyqt中也提供了QtXml類來用于解析XML文件,這里提供了多種xml文件解析方法,我們將用其提供的QXmlStreamReader方法來實現對XML的處理,這是一種基于流的解析方法,通常比較適合不需要反復的讀取數據的場合,在該方法中提供的API接口主要有以下幾個常用的,當然還有許多其他的API接口,大家可以參考QT官方文檔。
readNext():從xml輸入流中讀取下一個記號
name():記號的名稱,即<名稱>名稱>
isStartElement():判斷當前已讀取的記號是否為開始元素,開始元素即<>
isEndElement():判斷當前已讀取的記號是否為結束元素,結束元素即>
readElementText():讀取當前記號對應的文本值,<>文本值>
atEnd():判斷是否為文件結尾
了解了這些我們就可以調用這些接口來獲取標簽名和判斷是否是起始標簽,并且可以放的讀取標簽文本信息。
上一篇blog中,我們用weatherInfo = bytes.decode(pbyte)語句獲取了天氣信息并進行了打印,這里其實我們weatherInfo實一個字符數組,我們可以直接調用weatherXml= QtCore.QXmlStreamReader(weatherInfo)函數就可以讀入到XML流中,這樣就可以通過weatherXML對象來實現對XML流的相關操作,這里我們寫了一個解析從新浪獲取的天氣數據的Python類來實現對天氣數據的解析,其中代碼如下:
from PyQt5 import QtWidgets, QtCore, QtXml, QtGui,QtNetwork
from mainwindow import Ui_MainWindow
#from QtGui import QPixmap
import res
import time ?
class getWeatherInfo(object):?
? ? def __init__(self,weatherXml): ? ? ? ??
? ? ? ? self.weather_updateOK=0
? ? ? ? self.weather_city=""
? ? ? ? self.weather_wendu=""
? ? ? ? self.weahter_updatetime=""
? ? ? ? self.weather_suggest=""
? ? ? ? self.weather_fengli=""
? ? ? ? self.weather_fengxiang=""
? ? ? ? self.weather_sunrise=""
? ? ? ? self.weather_sunset=""
? ? ? ? self.forecast_weather_info_date=[]
? ? ? ? self.forecast_weather_info_high=[]
? ? ? ? self.forecast_weather_info_low=[]
? ? ? ? self.forecast_weather_info_dtype=[]
? ? ? ? self.forecast_weather_info_dfengxiang=[]
? ? ? ? self.forecast_weather_info_dfengli=[]
? ? ? ? self.forecast_weather_info_ntype=[]
? ? ? ? self.forecast_weather_info_nfengxiang=[]
? ? ? ? self.forecast_weather_info_nfengli=[]
? ? ? ? #指數
? ? ? ? self.weather_zhishu_name=[]
? ? ? ? self.weather_zhishu_vale=[]
? ? ? ? self.weather_zhishu_data=[]
? ? ? ? self.prassWeatherInfo(weatherXml)
? ? def prassWeatherInfo(self,weatherXml):
? ? ? ? print("start prassWeatherInfo")
? ? ? ? while not weatherXml.atEnd():?
? ? ? ? ? ? if weatherXml.hasError():
? ? ? ? ? ? ? ? print ("error: get weather data error")
? ? ? ? ? ? ? ? return -1
? ? ? ? ? ?elif ?weatherXml.isStartElement():
? ? ? ? ? ? ? ? if weatherXml.name()=="city":
? ? ? ? ? ? ? ? ? ? self.weather_city = weatherXml.readElementText()
? ? ? ? ? ? ? ? ? ? #print(city)
? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? elif weatherXml.name()=="updatetime":
? ? ? ? ? ? ? ? ? ? self.weahter_updatetime=weatherXml.readElementText()
? ? ? ? ? ? ? ? ? ? weatherXml.readNext() ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? elif weatherXml.name()=="wendu":
? ? ? ? ? ? ? ? ? ? self.weather_wendu=weatherXml.readElementText()
? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? elif weatherXml.name()=="fengli":
? ? ? ? ? ? ? ? ? ? self.weather_fengli=weatherXml.readElementText()
? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? elif weatherXml.name()=="shidu":
? ? ? ? ? ? ? ? ? ? self.weather_shidu=weatherXml.readElementText()
? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? elif weatherXml.name()=="fengxiang":
? ? ? ? ? ? ? ? ? ? self.weather_fengxiang=weatherXml.readElementText()
? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? elif weatherXml.name()=="sunrise_1":
? ? ? ? ? ? ? ? ? ? self.weather_sunrise=weatherXml.readElementText()
? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? elif weatherXml.name()=="sunset_1":
? ? ? ? ? ? ? ? ? ? self.weather_sunset=weatherXml.readElementText()
? ? ? ? ? ? ? ? ? ? weatherXml.readNext() ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? elif weatherXml.name()=="environment":
? ? ? ? ? ? ? ? ? ? print("environment")
? ? ? ? ? ? ? ? ? ? while not weatherXml.atEnd():
? ? ? ? ? ? ? ? ? ? ? ? print("test")
? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? if weatherXml.name()=="suggest":
? ? ? ? ? ? ? ? ? ? ? ? ? ? self.weather_suggest=weatherXml.readElementText()
? ? ? ? ? ? ? ? ? ? ? ? ? ? print("suggest")
? ? ? ? ? ? ? ? ? ? ? ? ? ? break ??
? ? ? ? ? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ?elif weatherXml.name()=="forecast":
? ? ? ? ? ? ? ? ? ? #print(weatherXml.readElementText())
? ? ? ? ? ? ? ? ? ? print("forecast")
? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? while not weatherXml.atEnd():
? ? ? ? ? ? ? ? ? ? ? ? if weatherXml.isStartElement():
? ? ? ? ? ? ? ? ? ? ? ? ? ? if weatherXml.name()=="weather":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? while not weatherXml.atEnd():
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if weatherXml.isStartElement():
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if weatherXml.name()=="date":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #print("weather info")
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? date = weatherXml.readElementText()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? self.forecast_weather_info_date.append(date)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #print(date)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? elif weatherXml.name()=="high":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? high=weatherXml.readElementText()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? self.forecast_weather_info_high.append(high)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #print(high)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? elif weatherXml.name()=="low":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? low=weatherXml.readElementText()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? self.forecast_weather_info_low.append(low)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #print(low)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? elif weatherXml.name()=="day":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #print("day info")
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? while not weatherXml.atEnd():
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if weatherXml.isStartElement():
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if weatherXml.name()=="type":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? type = weatherXml.readElementText()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? self.forecast_weather_info_dtype.append(type)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #print("type:")
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #print(type)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? elif weatherXml.name()=="fengxiang":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ffengxiang=weatherXml.readElementText()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? self.forecast_weather_info_dfengxiang.append(ffengxiang)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #print(ffengxiang)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? elif weatherXml.name()=="fengli":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ffengli=weatherXml.readElementText()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? print("fenli")
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? self.forecast_weather_info_dfengli.append(ffengli)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #print(ffengli)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#break
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? elif weatherXml.name()=="night":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #print("night info:")
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? while not weatherXml.atEnd():
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if weatherXml.isStartElement():
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if weatherXml.name()=="type":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ntype=weatherXml.readElementText()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? self.forecast_weather_info_ntype.append(ntype)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #print(ntype)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? elif weatherXml.name()=="fengxiang":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? nfengxiang=weatherXml.readElementText()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? self.forecast_weather_info_nfengxiang.append(nfengxiang)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #print(nfengxiang)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? elif weatherXml.name()=="fengli":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? nfengli=weatherXml.readElementText()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? print("nfenli")
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? self.forecast_weather_info_nfengli.append(nfengli)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #print(nfengli)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#break
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? ? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? elif weatherXml.name()=="zhishus":
? ? ? ? ? ? ? ? ? ? #print("zhishus:")
? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? while not weatherXml.atEnd():
? ? ? ? ? ? ? ? ? ? ? ? if weatherXml.isStartElement():
? ? ? ? ? ? ? ? ? ? ? ? ? ? if weatherXml.name()=="zhishu":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? print("zhishu2:")
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? while not weatherXml.atEnd():
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if weatherXml.isStartElement():
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if weatherXml.name()=="name":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? self.weather_zhishu_name.append(weatherXml.readElementText())
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #print("name")
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #print(self.weather_zhishu_name)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? elif weatherXml.name()=="value":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? self.weather_zhishu_vale.append(weatherXml.readElementText())
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #print("value")
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? elif weatherXml.name()=="detail":
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? self.weather_zhishu_data.append(weatherXml.readElementText())
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #print("detail")
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #print(weatherXml.readElementText())
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? ? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? weatherXml.readNext()
? ? ? ? ? ? ? ??
? ? ? ? weatherXml.clear()
? ? ? ? self.updateOK=1
? ? ? ? for i in range(0,5):
? ? ? ? ? ? print(self.weather_zhishu_name[i])
? ? ? ? ? ? print(self.weather_zhishu_vale[i])
? ? ? ? ? ? print(self.weather_zhishu_data[i])
?
? ? def updateOK(self):
? ? ? ? return self.updateOK
通過調用該類就可以實現對xml文件中個的天氣數據的解析,并且通過訪問類成員就可以獲取相應的天氣信息。
如下圖所示,是調用該類解析得到的天氣指數數據:
以上就是整個天氣xml數據解析的過程,后期blog中我將用該類來實現天氣demo中的xml數據解析,并且在dragonboard 410c平臺上完成整個天氣demo的設計和實現。
評論
查看更多