XML解析器只加载第一个对象

时间:2017-07-04 19:24:20

标签: ios xml swift xcode xml-parsing

我有xml parser但解析器中的函数能够获取xml文件的第一个对象,但无法将xml文件的所有类别都放入{{1 }}。这是功能:

mutable array

我的xml文件是这样的

    let xmlparser = XmlParser()
    xmlparser.loadRssFeed("FaceMask")
    faceMaskArray = (xmlparser.faceMaskArray.firstObject as! FaceMaskCategories).faceMaskItemArray
    collectionArray = faceMaskArray

该函数仅从 <?xml version="1.0" encoding="utf-8"?> <facemasks> <categories> <category > <id>0</id> <title>Animals</title> <image_name> leopard</image_name> <items> <item> <landmarks_file_name>leopard</landmarks_file_name> <item_id>1101</item_id> <mask_title>leopard</mask_title> <mask_image_name>leopard.png</mask_image_name> </item> </items> </category> <category > <id>1</id> <title>Animal</title> <image_name>leopard</image_name> <items> <item> <landmarks_file_name>leopard</landmarks_file_name> <item_id>1102</item_id> <mask_title>leopard</mask_title> <mask_image_name>leopard.png</mask_image_name> </item> </items> </category> <category > <id>2</id> <title>Animals</title> <image_name>tiger</image_name> <items> <item> <landmarks_file_name>leopard</landmarks_file_name> <item_id>1103</item_id> <mask_title>tiger</mask_title> <mask_image_name>tiger.png</mask_image_name> </item> </items> </category> <category > <id>3</id> <title>Animals</title> <image_name>tiger</image_name> <items> <item> <landmarks_file_name>leopard</landmarks_file_name> <item_id>1104</item_id> <mask_title>tigerz</mask_title> <mask_image_name>tiger.png</mask_image_name> </item> </items> </category> </categories> </facemasks> 正确获取第一个对象或最后一个对象。任何人都可以指导我如何从xml文件中正确获取所有类别。我非常感谢你的帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

检查此代码:

func beginParsing()
{
posts = []
parser = NSXMLParser(contentsOfURL:
(NSURL(string:"http://images.apple.com/main/rss/hotnews/hotnews.rss"))!)!
parser.delegate = self
parser.parse()
tbData!.reloadData()
}

以下解析器函数是获取整个数组:

func parser(parser: NSXMLParser, didStartElement elementName: String, 
namespaceURI: String?, qualifiedName qName: String?, attributes 
attributeDict: [String : String])
{
element = elementName
if (elementName as NSString).isEqualToString("item") // Replace this item with category.
{
elements = NSMutableDictionary()
elements = [:]
title1 = NSMutableString()
title1 = ""
date = NSMutableString()
date = ""
}
}

它从数组中获取所有项目,&#34; item&#34;实际上是标签或数组中的每个项目,就像&#34;类别&#34;在您的示例XML中。

这是示例XML:

http://images.apple.com/main/rss/hotnews/hotnews.rss#sthash.1Mq673bO.dpuf

并解析每个项目的数据:

func parser(parser: NSXMLParser!, foundCharacters string: String!)
{
 if element.isEqualToString("title") {
title1.appendString(string)
} else if element.isEqualToString("pubDate") {
date.appendString(string)
}
}

我正在使用本教程,它运行良好:

http://www.theappguruz.com/blog/xml-parsing-using-nsxmlparse-swift