1
我試圖解析XML格式的天氣數據,但我的解析器似乎遍歷所有的標籤,而不是我指定的標籤。 所以,我有我的didStartElement功能:爲什麼我的XML解析器不斷通過Swift中的標記迭代?
func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String])
{
if(elementName == "cap:event") {
capEventFound = true
}
}
和我didEndElement功能:
func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [NSObject : AnyObject])
{
if(elementName == "cap:event") {
capEventFound = false
}
}
我的解析器功能:解析
func parser(parser: NSXMLParser, foundCharacters string: String)
{
if(capEventFound)
{
newsStories.append(string)
print(newsStories)
}
else
{
print("No cap:event found")
}
}
其他相關功能:
override func viewDidLoad() {
super.viewDidLoad()
self.pvState.delegate = self
self.pvState.dataSource = self
stateCode = ["AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY"]
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int
{
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
{
return stateCode.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
{
return stateCode[row]
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
{
selectedState = stateCode[pickerView.selectedRowInComponent(0)]
url = "http://alerts.weather.gov/cap/\(selectedState).php?x=0"
urlStr = url.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!
searchURL = NSURL(string: urlStr as String)!
xmlParser = NSXMLParser(contentsOfURL: searchURL)!
xmlParser.delegate = self
xmlParser.parse()
}
我的輸出,例如當我選擇科羅拉多在這裏:http://pastebin.com/v3ULvQ0G
爲什麼它這樣做,我怎麼才能得到它只發布相關的帽:事件?