我是swift编程的新手.. 我想在swift中解析xml数据。
这是我的xml数据..
<rss version="2.0">
<channel>
<title>Zee News :India National</title>
<link>
<![CDATA[ http://zeenews.india.com ]]>
</link>
<description>
<![CDATA[
Visit Zee News for latest India news, get latest news from India and all over the world. We provide you latest celebrity news, latest bollywood news and entertainment news with fastest top stories online about cricket, sports, business, bollywood, entertainment, lifestyle, world and science to get yourself updated.
]]>
</description>
<language>en-us</language>
<copyright>Zee News Ltd</copyright>
<category>India National News</category>
<pubDate>
<![CDATA[ 2/04/2016 11:16:57 AM GMT ]]>
</pubDate>
<image>
<url>
<![CDATA[
http://znn.india.com/images/logo-zeenews-aab-nw.jpg
]]>
</url>
<title>
<![CDATA[ Zee News ]]>
</title>
<link>
<![CDATA[ http://zeenews.india.com ]]>
</link>
</image>
<item>
<title>
Son of retired Major General arrested in Goa for suspected `terror links`
</title>
<link>
<![CDATA[
http://zeenews.india.com/news/india/son-of-retired-major-general-arrested-in-goa-for-suspected-terror-links_1852160.html
]]>
</link>
<description>
Samir Sardana was picked up from Vasco railway station after he was found "wandering suspiciously".
</description>
<comments>mailto:inewsonline@gmail.com</comments>
<pubdate>Thursday, February 04, 2016, 10:13 GMT +5:30</pubdate>
<author/>
<guid isPermaLink="false">
<![CDATA[
http://zeenews.india.com/news/india/son-of-retired-major-general-arrested-in-goa-for-suspected-terror-links_1852160.html
]]>
</guid>
</item>
我试图解析但只有&#34; item&#34;数据不能解析&#34;标题&#34; &安培; &#34;图像&#34;
这是我的代码......
var parser = NSXMLParser()
var posts = NSMutableArray()
var elements = NSMutableDictionary()
var element = NSString()
var title1 = NSMutableString()
var title3 = NSMutableString()
var date = NSMutableString()
var link = NSMutableString()
func beginParsing()
{
posts = []
parser = NSXMLParser(contentsOfURL:(NSURL(string:"http://zeenews.india.com/rss/india-national-news.xml"))!)!
parser.delegate = self
parser.parse()
tbData!.reloadData()
}
func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?,attributes attributeDict:[NSObject :AnyObject])
{
if (elementName as NSString).isEqualToString("title")
{
elements = NSMutableDictionary.alloc()
title3 = NSMutableString()
title3 = ""
}
if (elementName as NSString).isEqualToString("item")
{
elements = NSMutableDictionary.alloc()
elements = [:]
title1 = NSMutableString()
title1 = ""
date = NSMutableString()
date = ""
link = NSMutableString()
link = ""
}
}
func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?)
{
if (elementName as NSString).isEqualToString("title")
{
if !title3.isEqual(nil) {
elements.setObject(title3, forKey: "title")
//posts.addObject(elements)
}
}
if (elementName as NSString).isEqualToString("item") {
if !title1.isEqual(nil) {
elements.setObject(title1, forKey: "title")
}
if !date.isEqual(nil) {
elements.setObject(date, forKey: "date")
}
if !link.isEqual(nil){
elements.setObject(link, forKey: "link")
}
posts.addObject(elements)
}
//posts.addObject(elements)
//posts.addObject(post)
}
func parser(parser: NSXMLParser, foundCharacters string: String?)
{
if element.isEqualToString("title")
{
title3.appendString(string!)
}
if element.isEqualToString("title") {
title1.appendString(string!)
}
if element.isEqualToString("link"){
link.appendString(string!)
}
if element.isEqualToString("pubDate") {
date.appendString(string!)
}
}
Plz ...建议我如何解析整个RSS源数据......
答案 0 :(得分:1)
我现在纯粹猜测。
你说item
解析得很好,而title
和image
却没解析。
查看XML似乎image
仅包含CDATA元素
<image>
<url>
<![CDATA[http://znn.india.com/images/logo-zeenews-aab-nw.jpg]]>
</url>
<title>
<![CDATA[ Zee News ]]>
</title>
<link>
<![CDATA[ http://zeenews.india.com ]]>
</link>
</image>
我在Stack Overflow上找到了this post,其中有人询问如何处理XML中的CDATA。事实证明NSXMLParserDelegate
有一个名为的可选方法:
parser(_ parser: NSXMLParser, foundCDATA CDATABlock: NSData)
也许这可以帮到你?