Почему синтаксический анализ XML-файла в Swift 4 вернется неполным?
Поэтому вот коды, которые я использовал для разбора xml, и тексты, которые я получил в печати и в табличном представлении, были неполными
func parser(_ parser: XMLParser, foundCharacters string: String) {
let data = string.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
print(data)
if data.count != 0 {
switch termsItem {
case "title" : termsTitle = data
case "body" : termsTexts = data
default :
break
}
}
}
и я изменяю этот код на это ниже, и теперь печать XML является правильным, но я не вижу ничего в табличном представлении
func parser(_ parser: XMLParser, foundCharacters string: String) {
let data = string
print(data)
if data.count != 0 {
switch termsItem {
case "title" : termsTitle = data
case "body" : termsTexts = data
default :
break
}
}
}
вот другие коды но я их не менял
func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) {
termsItem = elementName
}
func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
if elementName == "item" {
var theItems = Item()
theItems.title = termsTitle
theItems.body = termsTexts
print(theItems)
print(theItems.title)
print(termsTitle)
tableViewterms.append(theItems)
}
DispatchQueue.main.async {
self.otherTopicsTableView.reloadData()
}
}
}
1 ответ
Решение
Поэтому мне пришлось добавить данные, а затем удалить их, теперь этот код работает хорошо
func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) {
termsItem = elementName
}
func parser(_ parser: XMLParser, foundCharacters string: String) {
let data = string.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
if data.count != 0 {
switch termsItem {
case "title" : termsTitle = data
case "body" : termsTexts.append(contentsOf: data)
default :
break
}
}
}
func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
if elementName == "item" {
var theItems = Item()
theItems.title = termsTitle
theItems.body = termsTexts
print(theItems.body)
termsTexts.removeAll()
tableViewterms.append(theItems)
}
DispatchQueue.main.async {
self.otherTopicsTableView.reloadData()
}
}