Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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
XML分析无法找到字符-swift_Xml_Swift_Parsing - Fatal编程技术网

XML分析无法找到字符-swift

XML分析无法找到字符-swift,xml,swift,parsing,Xml,Swift,Parsing,在swift中解析一些XML代码时遇到问题 除了XML文件中的一个元素外,解析工作正常: <media:thumbnail width="2048" height="1152" url="www..." /> 我已经测试了代码,它似乎成功地在第一个函数中找到了元素。但是,紧接着,它运行结束元素的第三个函数 因此,解析器似乎将元素中的任何字符识别为结束该元素解析的调用。这与预期完全一样,因为元素没有任何内容。您可以在第一个函数的attributeDict参数中找到属性及其值谢谢!太好

在swift中解析一些XML代码时遇到问题

除了XML文件中的一个元素外,解析工作正常:

<media:thumbnail width="2048" height="1152" url="www..." />
我已经测试了代码,它似乎成功地在第一个函数中找到了元素。但是,紧接着,它运行结束元素的第三个函数


因此,解析器似乎将元素中的任何字符识别为结束该元素解析的调用。

这与预期完全一样,因为元素没有任何内容。您可以在第一个函数的
attributeDict
参数中找到属性及其值谢谢!太好了!:)
// 1
func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) {

    switch elementName {
    case "title": entry.title = String()
    case "description": entry.desc = String()
    case "media:thumbnail": entry.media = String()
    case "link": entry.link = String()
    case "pubDate": entry.pubDate = String()
    default: break
    }
    currentParsedElement = elementName

}

// 2
func parser(_ parser: XMLParser, foundCharacters string: String) {

    switch currentParsedElement {
    case "title": entry.title = entry.title + string
    case "description": entry.desc = entry.desc + string
    case "media:thumbnail": entry.media = entry.media + string
    case "link": entry.link = entry.link + string
    case "pubDate": entry.pubDate = entry.pubDate + string
    default: break
    }


}

// 3
func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {

    if elementName == "title" || elementName == "description" || elementName == "link" || elementName == "pubDate" || elementName == "media:thumbnail" {
        currentParsedElement = ""
    }

    if elementName == "item" {
        entriesArray.append(entry);
        entry = Entry()
    }

}

// 4
func parserDidEndDocument(_ parser: XMLParser) {

    reloadTableView()

}