Beispiel für das Parsen von (X)Html mit libxml2 in iOS
Neulich habe ich angefangen zu spielen, um mit der libxml2-lib innerhalb einer iOS-iPhone-Projekt. Ich Lesen Sie einige nützliche links, wie:
http://laurentparenteau.com/blog/2009/12/parsing-xhtml-in-c-a-libxml2-tutorial/
sowie einige sehr nette post hier:
http://bill.dudney.net/roller/objc/entry/libxml2_push_parsing
Habe ich es geschafft zum abrufen von remote-html (mit ASIHTTPRequest) und erfolgreich die data (NSData) auf die 'didReceiveData' Ereignis geschoben, um eine wrapper-Klasse enthält einen parser erstellt, die mit htmlCreatePushParserCtxt (SAX Stil). Ich bekomme schön die startDocument
und endDocument Rückrufe. In der 'startElement' und 'Zeichen' Rückrufe, die ich drucken Sie das 'localname' paramater (const xmlChar). In der Konsole sehe ich, dass er findet, 'html', dann 'Körper', und dann einige 'p' - tag, aber dann bekomme ich viele unerkennbare Zeichen (sometimese sieht es noch aus wie Chinesen..)...
Sowieso, bevor man in zu viel code details, möchte ich Fragen, ob jemand ein funktionsfähiges Beispiel zum Parsen von (x)html mit libxml2 in einem objective-c basiert projet? Ich habe versucht, googeln für mehr als die 2 genannten links, aber bis jetzt kein Glück.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde vorschlagen
AQXMLParser
von alan quartemain : http://blog.alanquatermain.me/2013/01/09/using-aqxmlparser-and-friends/es ist ein dünner wrapper um libxml2 und vieles mehr performat als NSXMLParser.
set
HTMLMode
- Eigenschaft auf ja, so verwendet er libxml im html-Modus.. (ich habe es viele Male und es tut ganz gut, auch mit nicht gültigem html-Code)Warum würden Sie wollen, zu verwenden
libxml2
über Apple built-inNSXMLParser
Klasse? Wenn Sie eine Anwendung für iOS, macht es mehr Sinn, eine Stiftung Klasse als die C-Bibliothek. Sie können auf die Dokumentation NSXMLParser auf der Webseite von Apple.Wenn Sie nicht möchten, zu verwenden, NSXMLParser direkt, Sie könnten versuchen, das analysieren von XML mit NSXMLDocument, die hat ein einfach-zu-verwenden
- (id)initWithData:(NSData *)data options:(NSUInteger)mask error:(NSError **)error
Methode zum Parsen von XML-Daten. Sie können sogar dieNSXMLDocumentTidyHTML
option für die init-Methode zum Lesen von HTML-Daten als XHTML.