Jak analyzovat soubory XML v Xcode

Ačkoli vestavěný XML analyzátor přidává nové desktopové nebo mobilní aplikaci skutečnou hodnotu, kódování této funkce obvykle vyžaduje hodně času na vývoj a testování beta verze. Program Apple Xcode obsahuje analyzátor XML, který obchází většinu této ruční práce.

An XML soubor může obsahovat cokoli od základních údajů o vaší aplikaci po RSS kanál pro web. Mohou být také skvělým způsobem, jak vzdáleně aktualizovat informace ve vaší aplikaci, čímž obejdete potřebu odeslat nový binární soubor do Apple jednoduše pro přidání nové položky do seznamu.

Proces Xcode

Integrovaný proces Xcode obsahuje kroky pro inicializaci proměnných, které se mají použít, spuštění procesu XML parseru, krmení tohoto procesu souborem, posouzení jednotlivých prvků a znaků (hodnot) v těchto prvcích, rozpoznání konce jednotlivého prvku a ukončení analýzy proces.

Použijte analyzátor XML

Pro ilustraci podrobností provedeme analýzu ukázkového souboru z internetu předáním konkrétní webové adresy (URL).

Začněte vytvořením hlavičkového souboru. Toto je příklad velmi základního souboru záhlaví pro ovladač podrobného zobrazení s minimálními požadavky na analýzu našeho souboru:

instagram viewer

@interface RootViewController: UITableViewController {
DetailViewController * detailViewController;
NSXMLParser * rssParser;
Články NSMutableArray *;
Položka NSMutableDictionary *;
NSString * currentElement;
NSMutableString * ElementValue;
BOOL errorParsing;
}
@property (nonatomic, keep) IBOutlet DetailViewController * detailViewController;
- (void) parseXMLFileAtURL: (NSString *) URL;


Proces parseXMLFileAtURL spustí proces. Když to skončí, „články“ NSMutableArray obsahují data. Pole se skládá z proměnlivých slovníků s klíči souvisejícími s názvy polí v souboru XML.

Dále inicializujte proces:

- (void) parserDidStartDocument: (NSXMLParser *) parser {
NSLog (@ "Soubor nalezen a analýza zahájena");
}

Tato funkce běží na začátku procesu. Do této funkce není třeba nic vkládat, ale pokud chcete provést úkol, když se soubor začne analyzovat, do tohoto místa vložíte svůj kód.

Dejte programu pokyn, aby něco stáhlo

Dále dejte programu pokyn, aby něco stáhl:

- (void) parseXMLFileAtURL: (NSString *) URL
{
NSString * agentString = @ "Mozilla / 5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit / 525.27.1 (KHTML, jako Gecko) Verze / 3.2.1 Safari / 525.27.1 ";
NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:
[NSURL URLWithString: URL]];
[request setValue: agentString forHTTPHeaderField: @ "User-Agent"];
xmlFile = [NSURLConnection sendSynchronousRequest: požadavek návratuResponse: žádná chyba: žádná];
articles = [[NSMutableArray alloc] init];
errorParsing = NE;
rssParser = [[NSXMLParser alloc] initWithData: xmlFile];
[rssParser setDelegate: self];
// Možná budete muset některé z nich zapnout v závislosti na typu analyzovaného souboru XML
[rssParser setShouldProcessNamespaces: NO];
[rssParser setShouldReportNamespacePrefixes: NE];
[rssParser setShouldResolveExternalEntities: NO];
[rssParser parse];
}


Tato funkce instruuje stroj, aby stáhl soubor na konkrétní webovou adresu (URL) a zahájil proces jeho analýzy. Říkáme vzdálenému serveru, že jsme Safari běžící na Macu jen v případě, že se server pokusí přesměrovat iPhone / iPad na mobilní verzi.

Možnosti na konci jsou specifické pro určité soubory XML. Většina souborů RSS a obecných souborů XML je nebude muset mít zapnuté.

Chyba - zkontrolujte výsledek

Proveďte základní kontrolu chyb výsledku:

- (void) parser: (NSXMLParser *) parser parseErrorOccurred: (NSError *) parseError {
NSString * errorString = [NSString stringWithFormat: @ "Kód chyby% i", [kód parseError]];
NSLog (@ "Chyba při analýze XML:% @", errorString);
errorParsing = ANO;
} Toto směrování kontroly chyb nastaví binární hodnotu, pokud dojde k chybě. Možná zde budete potřebovat něco konkrétnějšího podle toho, co děláte. Pokud jednoduše potřebujete po zpracování v případě chyby spustit nějaký kód,


Tato rutina kontroly chyb nastaví binární hodnotu, pokud dojde k chybě. Možná zde budete potřebovat něco konkrétnějšího podle toho, co děláte. Pokud jednoduše potřebujete po zpracování v případě chyby spustit nějaký kód, můžete v té době volat binární proměnnou pro analýzu chyb.

Analyzujte načtený obsah

Dále program rozdělí načtený obsah a analyzuje jej:

- (void) parser: (NSXMLParser *) parser didStartElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI qualifiedName: (NSString *) qName attributes: (NSDictionary *) attributeDict {
currentElement = [kopie názvu prvku];
ElementValue = [[NSMutableString alloc] init];
if ([[elementName isEqualToString: @ "item"]) {
item = [[NSMutableDictionary alloc] init];
}
}


Maso analyzátoru XML obsahuje tři funkce, jednu, která běží na začátku jednotlivce prvek, ten, který běží uprostřed analýzy prvku, a ten, který běží na konci živel.

V tomto příkladu analyzujeme soubor podobný souborům RSS, které rozdělí prvky do skupin pod nadpisem položky v souboru XML. Na začátku zpracování kontrolujeme název prvku „item“ a přidělujeme náš slovník položek, když je detekována nová skupina. Jinak inicializujeme naši proměnnou pro hodnotu:

- (void) parser: (NSXMLParser *) parser found Charaktery: (NSString *) řetězec {
[ElementValue appendString: string];
}


Když najdeme znaky, jednoduše je přidáme do naší proměnné ElementValue:

- (void) parser: (NSXMLParser *) parser didEndElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI qualifiedName: (NSString *) qName {
if ([[elementName isEqualToString: @ "item"]) {
[articles addObject: [item copy]];
} else {
[item setObject: ElementValue forKey: elementName];
}
}

Co se stane, když je analýza dokončena

Když program dokončí zpracování prvku, musí provést jednu ze dvou věcí:

  • Pokud je koncový prvek položka, naši skupinu jsme dokončili, takže do naší řady článků přidáme náš slovník.
  • Pokud prvek není položka, nastavíme hodnotu v našem slovníku pomocí klíče, který odpovídá názvu prvku. (To znamená, že nepotřebujeme samostatnou proměnnou pro každé pole v souboru XML. Můžeme je zpracovat trochu dynamičtěji.)

Toto je poslední funkce potřebná pro naši analýzu; končí dokument. Sem vložte jakýkoli konečný kód nebo zadejte podprogram opravy chyb:

- (void) parserDidEndDocument: (NSXMLParser *) parser {
if (errorParsing == NE)
{
NSLog (@ „Zpracování XML hotovo!“);
} else {
NSLog (@ "Při zpracování XML došlo k chybě");
}
}

Uložte data

Jednou z věcí, které by zde mnoho aplikací mohlo chtít udělat, je uložit data nebo soubor XML do souboru v zařízení. Tímto způsobem, pokud zařízení není připojeno k internetu při příštím načtení aplikace, se stále může dostat k těmto informacím.

Samozřejmě nemůžeme zapomenout na nejdůležitější část: říct vaší aplikaci, aby analyzovala soubor (a dát mu webovou adresu, kde jej najdete na!). Chcete-li zahájit proces, přidejte tento řádek kódu na příslušné místo, kde chcete provést zpracování XML:

 [self parseXMLFileAtURL: @ " http://www.webaddress.com/file.xml"]; 
instagram story viewer