【问题标题】:How to get html attribute value from a string in swift如何在swift中从字符串中获取html属性值
【发布时间】:2015-11-13 11:51:41
【问题描述】:

我是 swift 新手,需要一点帮助。

我想从已经使用

转换为字符串的 img 标签中获取 src 值
string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())

我正在从博客中检索帖子并尝试从每个项目中获取图像 url,以便我可以检索图像并将其显示在图像视图中。

这是我的代码:

类 myTableViewController: UITableViewController, NSXMLParserDelegate {

var parser: NSXMLParser = NSXMLParser()
var blogPosts: [BlogPost] = []
var postTitle: String = String()
var eName: String = String()

override func viewDidLoad() {
    super.viewDidLoad()
    let url:NSURL = NSURL(string: "http://myurl.com")!
    parser = NSXMLParser(contentsOfURL: url)!
    parser.delegate = self
    parser.parse()
}

func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {
    eName = elementName
    if elementName == "item" {
        postTitle = String()
    }
}

func parser(parser: NSXMLParser, foundCharacters string: String) {
    let data = string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
    if (!data.isEmpty) {
        if eName == "title" {
            postTitle += data
        } else if eName == "content:encoded" {
            //get the img src from data

        }
    }
}

Blogpost 类:

类博客帖子{

var postTitle: String = String()

}

【问题讨论】:

  • 如果是xml格式,那么你应该使用xml解析器,因为如果xml中有任何嵌套的东西,谓词和其他字符串函数将无法满足你的要求。
  • 我正在使用 NSXMLParser 从 url 获取内容并实现 NSXMLParserDelegate 方法...当我获取内容时,它在 html 标记中。我想从 feed 中的第一张图片中获取 img src 属性值
  • 发布一些与please相关的内容。
  • 我已将我的代码添加到原始帖子中

标签: html ios swift parsing


【解决方案1】:

既然我能解决问题,我可以回答我的问题,因为它是允许的。

我实现了 Kanna 框架并使用 doc.at_css("img") 来获取图像标签,然后是 node["src"]!对于 img src 值。欲了解更多信息https://github.com/tid-kijyun/Kanna

这是我的代码:

func parser(parser: NSXMLParser, foundCharacters string: String) {
        let data = string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
        if (!data.isEmpty) {
            if eName == "content:encoded" {
                if let doc = Kanna.HTML(html: data, encoding: NSUTF8StringEncoding) {
                    if let node = doc.at_css("img") {
                        postImageUrl = node["src"]!
                    }
                }
            }
        }
    }

【讨论】:

    猜你喜欢
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多