2014-12-28 2 views
0

웹 사이트 (내 경우 http://www.quest.nl/rss)에서 RSS 피드를 읽는 iOS 앱을 만들고, RSS를 UITableView로 구문 분석합니다. 기사를 선택할 수 있습니다. 선택한 기사는 UIWebView으로 표시됩니다. XML을 성공적으로 파싱 할 수 있지만 기사 링크 (html 기사 링크입니다.하지만 NSXMLParser도 사용할 수있는 것으로 생각했습니다)를 구문 분석하려고 할 때 문제가 발생합니다. parser? .parse()는 false를 반환하지만 (뭔가 잘못되었음을 의미 함) parser?.parserError의 내용은 여전히 ​​nil입니다. 구문 분석을 해결하지 않았다 내가 파서 구현 모든 방법을 삭제 시도Swift parser.parse()는 false를 반환하지만 parserError는 반환하지 않습니다.

@objc protocol HTMLParserDelegate{ 
    func parsingWasFinished() 
} 

import UIKit 

class HTMLParser: NSObject, NSXMLParserDelegate { 

    func startParsingWithContentsOfURL(linkURL: NSURL) { 
     let parser = NSXMLParser(contentsOfURL: linkURL) 
     parser?.delegate = self 
     println(parser?.parse()) 
    } 

    func parser(parser: NSXMLParser!, parseErrorOccured parseError: NSError!) { 
     println(parseError.description) 
    } 

    func parser(parser: NSXMLParser, 
       validationErrorOccured validationError: NSError!) { 
     println(validationError.description) 
    } 

    func parserDidEndDocument(parser: NSXMLParser!) { 
     //println("finished! :D") 
     delegate?.parsingWasFinished() 
    } 
} 

(위 참조)하지만, 심지어 :

내 코드입니다.

URL을 테스트 (http://www.quest.nl/foto/de-5-gekste-dieren-van-2014)로 사용하면 파서가 80 줄로 표시되지만 95 줄에 표시되지 않고 모든 이전 태그를 성공적으로 파싱하는 것으로 나타났습니다.

+0

일반적으로 'NSXMLParser'를 사용하여 HTML을 구문 분석 할 수 없습니다. THPPL 사용을 고려해야합니다. [iOS에서 HTML 구문 분석 방법] (http://www.raywenderlich.com/14172/how-to-parse-html-on-ios)을 참조하십시오. – Rob

+0

한편, XML 표준을 따르지 않는 것에 대한 자세한 설명 오류를 찾고 있다면 커맨드 라인'xmllint' 프로그램이 비추어지고 있습니다. 나는이 경우에 필요하다고 확신하지 않지만 유효한 XML이라고 생각되는 내용을 파싱하는 데 문제가 있다면'xmllint'는 뒷주머니에 보관할 좋은 리소스입니다. – Rob

답변

0

Rob의 코멘트 덕분에 나는 Hpple을 살펴보고 내 문제를 해결했습니다.

내 질문에 대한 답변을 찾는 사람이라면 누구든지 내 단계를 자세히 설명 할 것입니다. 실제로 HTML은 XML과 같지 않습니다. 사용 된 HTML 형식이 매우 정교했지만 XML Parser는 코드 처리에 큰 문제가있었습니다. 그런 다음 Hpple로 바꿨습니다.이 코드는 매우 유용하고 사용자 친화적이었으며, Github에서 찾은 코드를 사용하여 프로젝트에 추가했습니다. 그 시점부터 Hpple과 사용하기 쉽고 멋진 구문을 구문 분석 할 수있었습니다. HTML, 아무 문제없이.

팁 모두에게 감사드립니다!

관련 문제