1.核心代码
- 因为正在解析XMl元素的代理方法会调用多次,
bookTitle += data
,要把多次的字符串拼接起来
func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) {
print("开始 \(elementName)")
eName = elementName
if elementName == "book" {
bookTitle = ""
bookAuthor = ""
}
}
func parser(_ parser: XMLParser, foundCharacters string: String) {
print("ing \(eName)")
let data = string.trimmingCharacters(in: NSCharacterSet.whitespacesAndNewlines)
if (!data.isEmpty) {
if eName == "title" {
bookTitle += data
} else if eName == "author" {
bookAuthor += data
}
}
}
func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
print("结束 \(elementName)")
if elementName == "book" {
let book = Book()
book.bookTitle = bookTitle
book.bookAuthor = bookAuthor
books.append(book)
}
}
2.参考博客(本人亲测有效)
iOS tutorial 7:解析XML(swift)