iOS - de snelste manier om alle <img> in een html-string op te halen?
pattern-matching image html iphone
Ik heb veel HTML-strings (nieuwsitems van Google Reader) om te verwerken. Wat ik vooral moet doen, is alle img-tags van de HTML's ophalen.
Kan iemand me een meest efficiënte manier vertellen om dat te doen?
Ook, wat als ik alle tags ook moet ophalen
labels? De snelste manier om beide of zelfs meerdere tags in één run op te halen?
toegevoegd 27 oktober 2011 op 03:55 de auteur Jackson Tale bewerkt 27 oktober 2011 op 04:43
Ervan uitgaande dat de HTML-reeksen daadwerkelijk geldige xml zijn (dat wil zeggen ze zijn eigenlijk XHTML), dan zou je moeten overwegen om XPath te gebruiken om alle elementen van de naam "IMG" te matchen. Ik heb verschillende C-bibliotheken in een iOS-applicatie gebruikt om dit soort dingen met succes te doen.
toegevoegd 27 oktober 2011 op 04:13 de auteur Tim Dean
@cobbal, bedankt. maar ik kan niet aannemen dat in feite veel HTML's van RSS-items geen strikt geldige HTML zijn. Als ik een XHTML-document maak, is het ook veel langzamer dan pure tekenreeks scannen.
toegevoegd 27 oktober 2011 op 04:42, de auteur Jackson Tale, de bron
Dat is een vrij grote veronderstelling om voor willekeurige RSS-items te maken.
toegevoegd 27 oktober 2011 op 04:16, de auteur cobbal, de bron
Om te verduidelijken, dit kan nog steeds de beste methode zijn. Het hangt af van je XML-parser en hoe goed hij goed geformuleerde of verkeerd ingedeelde HTML parseert.
toegevoegd 27 oktober 2011 op 04:27, de auteur cobbal, de bron
Waar - het is een idee dat alleen voor XHTML-pagina's zou werken en dat het beperkt maakt.
toegevoegd 27 oktober 2011 op 04:25, de auteur Tim Dean, de bron
Een andere benadering om te proberen zou zijn om NSScanner-instanties te gebruiken. Ervan uitgaande dat u uw HTML-string in een NSString genaamd htmlString heeft, kunt u zoiets als dit proberen:
toegevoegd 27 oktober 2011 op 05:36 de auteur Tim Dean
Probeer libtidy + NSXMLParser:
Als dit niet werkt, kunt u proberen de HTML-bron in een UIWebView te laden en JavaScript te gebruiken om toegang te krijgen tot de DOM.
toegevoegd 27 oktober 2011 op 04:42 de auteur djromero
Hallo, dit is eigenlijk wat ik aan het doen ben, het eerst opruimen en het dan ontleden. maar het is erg langzaam. Het kost bijna 0,5 - 0,9 sec voor slechts één rss-item (de lengte van de HTML is ongeveer 2KB - 10 KB). Als ik dit voor 50 items doe, duurt het ongeveer 1 minuut.
toegevoegd 27 oktober 2011 op 04:45, de auteur Jackson Tale, de bron
U vroeg naar de HTML-reeks. RSS is geen HTML-tekenreeks. Heb je object-c RSS-parsers gecontroleerd? Hoe specifieker, hoe sneller, denk ik.