Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios XML解析器仅加载第一个对象_Ios_Xml_Swift_Xcode_Xml Parsing - Fatal编程技术网

Ios XML解析器仅加载第一个对象

Ios XML解析器仅加载第一个对象,ios,xml,swift,xcode,xml-parsing,Ios,Xml,Swift,Xcode,Xml Parsing,我有一个xml解析器,但解析器中的函数能够获取xml文件的第一个对象,但不能将xml文件的所有类别都放入可变数组。以下是功能: let xmlparser = XmlParser() xmlparser.loadRssFeed("FaceMask") faceMaskArray = (xmlparser.faceMaskArray.firstObject as! FaceMaskCategories).faceMaskItemArray collectionArr

我有一个
xml解析器
,但解析器中的函数能够获取xml文件的第一个对象,但不能将
xml
文件的所有类别都放入
可变数组
。以下是功能:

    let xmlparser = XmlParser()
    xmlparser.loadRssFeed("FaceMask")
    faceMaskArray = (xmlparser.faceMaskArray.firstObject as! FaceMaskCategories).faceMaskItemArray
    collectionArray = faceMaskArray
我的xml文件就是这样

    <?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>

0
动物
豹子
豹子
1101
豹子
leopard.png
1.
动物
豹子
豹子
1102
豹子
leopard.png
2.
动物
老虎
豹子
1103
老虎
tiger.png
3.
动物
老虎
豹子
1104
老虎
tiger.png
函数仅从
xml文件
正确获取第一个对象或最后一个对象。谁能告诉我如何从xml文件中正确地获取所有类别。我真的很感谢你的帮助。谢谢。

检查此代码:

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 = ""
}
}
它从数组中获取所有项,“item”实际上是标记或数组中的每个项,就像示例XML中的“category”一样

以下是示例XML:

以及解析每个项目的数据:

func parser(parser: NSXMLParser!, foundCharacters string: String!)
{
 if element.isEqualToString("title") {
title1.appendString(string)
} else if element.isEqualToString("pubDate") {
date.appendString(string)
}
}
我正在使用本教程,它运行良好: