HTML标记属性随NSURLSession

时间:2015-12-07 14:02:58

标签: html ios swift cocoa-touch

我有一个iPhone应用程序,可以使用NSURLSession从我的工作网站下载网站的某些页面。然后我用NSXMLParser解析网页,并显示我在TableView中获得的信息。我知道HTML不是XML,NSXMLParser做得很好而且使用简单。直到几天前,当我们的IT部门对他们的系统进行更新时,这工作正常。试图找出问题所在,似乎我的代码实际上仍然正常工作,但问题是我需要的一些HTML属性不再被NSURLSession看到。

这是我用来下载网页的代码:

func loadPage(linkToFollow: String) {
    // make NSURLSession task
    let url: NSURL = NSURL(string: linkToFollow)!
    let request: NSURLRequest = NSURLRequest(URL: url)
    let config = NSURLSessionConfiguration.defaultSessionConfiguration()
    config.allowsCellularAccess = true
    let session = NSURLSession(configuration: config, delegate: self, delegateQueue: NSOperationQueue.mainQueue())

    let task: NSURLSessionDataTask = session.dataTaskWithRequest(request, completionHandler: {(data : NSData?, response : NSURLResponse?, error : NSError?) in

        if error != nil {
            print(error!.description)
        } else {

            // make string of data and log
            let dataString = NSString(data: data!, encoding: NSUTF8StringEncoding)! as String
            print("\nDATASTRING:\n")
            print(dataString)

            // data directly to an NSXMLParser
            let myParser: NSXMLParser = NSXMLParser(data: data!)
            myParser.delegate = self
            myParser.parse()
        }
    })
    task.resume()
}

在浏览器中,页面与以前相同。查看Safari中的源代码(Firefox和Chrome中的结果相同):

<td class="TableCellContent"><input name="txtReisNummer_Weergave" type="text" value="R2015-065707" readonly="readonly" id="txtReisNummer_Weergave" class="TextBoxNormal" style="width:400px;" /></td>

我需要的属性是value-attribute:' value =“R2015-065707”'

当我将数据NSURLSession下载到字符串中时(参见上面的代码),它看起来像这样:

<td class="TableCellContent"><input name="txtReisNummer_Weergave" type="text" readonly="readonly" id="txtReisNummer_Weergave" class="TextBoxNormal" /></td>

其中两个属性已经消失:'value'和'style'属性。

当我让解析器记录属性字典的描述时,我得到了这个:

attributeDict, description = ["name": "txtReisNummer_Weergave", "type": "text", "id": "txtReisNummer_Weergave", "class": "TextBoxNormal", "readonly": "readonly"]

这与记录数据字符串的结果相同,'value'和'style'属性消失了。

所以我需要知道的是为什么NSURLSession忽略了源代码中的两个属性?我能做些什么来纠正这个问题,以便获得我需要的数据?

非常感谢任何帮助!

0 个答案:

没有答案