0

我现在正在处理复杂的 XML 解析。

这是链接:https ://www.reddit.com/hot/.rss

我使用 Alamofire 来获取数据:

protocol APIUsable {

}

结构 API:APIUsable {

static func fetchRedditFeedListData() -> Observable<[Entry]>{
    let URL = "https://www.reddit.com/hot/.rss"
    return Observable.create { observer in
        Alamofire.request(URL).response { response in
            guard let data = response.data else {
                return
            }
            do {
                let xml = SWXMLHash.parse(data)
                let entries: [Entry] = try xml["feed"]["entry"].value()
                observer.onNext(entries)
            } catch let error as NSError {
                print(error.localizedDescription)
            }
            observer.onCompleted()
        }
        return Disposables.create()
    }
}

}

以下是我为解析而构建的结构。它运作良好。

struct Entry: XMLIndexerDeserializable {
let title: String
let updated: String
let category: String
let content: String

static func deserialize(_ node: XMLIndexer) throws -> Entry {
    return try Entry(
        title: node["title"].value(),
        updated: node["updated"].value(),
        category: node["category"].value(ofAttribute: "term"),
        content: node["content"].value()
    )
}

}

但是我也想获取图片字符串属于content,img,src

4

1 回答 1

0

我自己找到了解决方案。

正如我们所见,XML 中有一个 HTML。

所以,我再次使用 SWXMLHash 来解析内容

let xml = SWXMLHash.parse(/*put the content String here*/)
let imageString = xml ["table"]["tr"]["td"][0]["a"]["img"].element?.attribute(by: "src")?.text

然后我们可以将 src 的值作为字符串以供将来使用

于 2018-02-16T16:19:57.403 回答