"&nbsp" strippen uit HTML file met objective-c
16 februari 2009 - 19:23   
geplaatst door: BeNoOne
Objective-C goeroes,

I heb een programma wat ik in Xcode heb gemaakt. Het is een combinatie van Applescript en het eea aan "geleende" Objective-c routines. Door de oplettende kijker zal het al snel opgemerkt worden, onderstaande Objective-c routine stript de markup uit een HTML file.

Ik roep met de volgende Appelscript code:

on remove_markup()
    set AlleItemsSchoon to call method "flattenHTML:" with parameter theContents
    return AlleItemsSchoon
end remove_markup

De volgende "geleende" Objective-C routine:

- (id)flattenHTML:(NSString *)html {

   NSScanner *theScanner;
   NSString *text = nil;

   theScanner = [NSScanner scannerWithString:html];

   while ([theScanner isAtEnd] == NO) {

       // find start of tag
       [theScanner scanUpToString:@"<" intoString:NULL] ;

       // find end of tag
       [theScanner scanUpToString:@">" intoString:&text] ;

       // replace the found tag with a space
       //(you can filter multi-spaces out later if you wish)
       html = [html stringByReplacingOccurrencesOfString:
[ NSString stringWithFormat:@"%@>", text]
  withString:@""];

   } // while //
   
   return html;

}

Dit werkt allemaal zoals geadverteerd, maar ik wil ook nog "&nbsp" uit de file strippen. Wie kan mij op weg helpen om bovenstaande Objective-C code zo aan te passen dat dit ook daadwerkelijk gaat gebeuren.
Ik word niet gehinderd door enige kennis van Objective-C. Wel kan ik wat simpele dingen in Applescript maken, dus alle hulp is welkom.

Bvbd

Bert


(Bewerkt door BeNoOne om 19:25, 16-02-2009)

"&nbsp" strippen uit HTML file met objective-c
17 februari 2009 - 13:44    reactie #1
geplaatst door: Willemien
zo uit m'n hoofd (en de documentatie), dus niet getest:

html = [html stringByReplacingOccurrencesOfString:@"&nbsp" withString:@" "];

eenmalig, buiten de while-loop, voor return bijvoorbeeld.

gaat het strippen van alles tussen <> wel goed als ze genest zijn, of als < in de tekst voorkomt? of komt dat niet voor?

"&nbsp" strippen uit HTML file met objective-c
17 februari 2009 - 17:49    reactie #2
geplaatst door: BeNoOne
Bedankt, werkt als een zonnetje. Ik moet me toch maar eens wat meer verdiepen in Objective-C. Ziet er zo logisch uit.

Wat betreft jou vraag. De HTML die ik er in gooi ziet er altijd hetzelfde uit. Ik zoek alleen wat tijden, datums en plaatsen in de file die wel veranderen. Dus voor mijn doeleinden voldoet deze "simpele" strip prima. Ik gebruikte tot de overgang naar Leopard onderstaande applescript code.

on remove_markup()
       set copy_flag to true
       set the clean_text to ""
       repeat with this_char in theContents
               set this_char to the contents of this_char
               if this_char is "<" then
                       set the copy_flag to false
               else if this_char is "&" then
                       set the copy_flag to false
               else if this_char is ">" then
                       set the copy_flag to true
               else if the copy_flag is true then
                       set the clean_text to the clean_text & this_char as string
               end if
       end repeat
       set AlleItemsSchoon to the paragraphs of clean_text
       return AlleItemsSchoon
end remove_markup

Maar onder Leopard duurde dit in eens geen paar seconden meer, maar het grootste gedeelte van 20 minuten. Lang leven Objective-C het is nu in een fractie van een seconde gepiept.

Nogmaals bedankt.

Grt,  Bert