
Yerleşik bir XML ayrıştırıcısı, yeni bir masaüstü veya mobil uygulamaya gerçek değer katsa da, bu işlevselliği kodlamak genellikle çok fazla geliştirme süresi ve beta testi gerektirir. Apple’ın Xcode programı, bu manuel çalışmanın çoğunu atlayan bir XML ayrıştırıcı içerir. Bir XML dosyası, uygulamanızla ilgili temel verilerden bir web sitesi için RSS beslemesine kadar her şeyi içerebilir. Ayrıca, uygulamanızdaki bilgileri uzaktan güncellemenin harika bir yolu olabilirler, böylece yalnızca bir listeye yeni bir öğe eklemek için Apple’a yeni bir ikili dosya gönderme ihtiyacını ortadan kaldırırlar.
Xcode Süreci
Yerleşik Xcode işlemi, kullanılacak değişkenleri başlatmak, XML ayrıştırıcı işlemini başlatmak, bu işleme bir dosya beslemek, tek tek öğeleri ve bu öğeler içindeki karakterleri (değeri) değerlendirmek, tek bir öğenin sonunu tanımak ve ayrıştırma işlemini sonlandırıyor.
XML Ayrıştırıcıyı kullanın
Ayrıntıları göstermek için, belirli bir web adresini (URL) ileterek internetten bir örnek dosyayı ayrıştıracağız. Başlık dosyasını oluşturmaya başlayın. Bu, dosyamızı ayrıştırmak için minimum gereksinimleri olan bir Ayrıntı Görünümü Denetleyicisi için çok temel bir başlık dosyası örneğidir: @interface RootViewController : UITableViewController {
DetailViewController *detailViewController;
NSXMLParser *rssParser;
NSMutableArray *makaleler;
NSMutableDictionary *öğesi;
NSString *currentElement;
NSMutableString *ElementValue;
BOOL hatasıAyrıştırma;
}
@property (atomik olmayan, muhafaza) IBOutlet DetailViewController *detailViewController;
– (void)parseXMLFileAtURL:(NSString *)URL;
type=”kod”>
parseXMLFileAtURL işlevi işlemi başlatır. Bittiğinde, NSMutableArray “makaleleri” verileri tutar. Dizi, XML dosyasındaki alan adlarıyla ilgili anahtarlara sahip değiştirilebilir sözlüklerden oluşur. Ardından, işlemi başlatın: – (void)parserDidStartDocument:(NSXMLParser *)parser{
NSLog(@”Dosya bulundu ve ayrıştırma başladı”);
}
type=”code”> Bu işlev, işlemin başlangıcında çalışır. Bu fonksiyona herhangi bir şey koymanıza gerek yoktur, ancak dosya ayrıştırılmaya başladığında bir görev yapmak istiyorsanız, kodunuzu buraya koyacaksınız.
Programa Bir Şey İndirmesini Söyleyin
Ardından, programa bir şey indirmesini söyleyin: – (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, Gecko gibi) Sürüm/3.2.1 Safari/525.27.1″;
NSMutableURLRequest *istek = [NSMutableURLRequest requestWithURL:
[NSURL URLWithString:URL]];
[request setValue:agentString forHTTPHeaderField:@”User-Agent”];
xmlDosya = [ NSURLConnection sendSynchronousRequest:request returningResponse: nil error: nil ];
makaleler = [[NSMutableArray alloc] içinde];
errorAyrıştırma=HAYIR;
rssParser = [[NSXMLParser alloc] initWithData:xmlFile];
[rssParser setDelegate:self];
// Ayrıştırdığınız XML dosyasının türüne bağlı olarak bunlardan bazılarını açmanız gerekebilir.
[rssParser setShouldProcessNamespaces:NO];
[rssParser setShouldReportNamespacePrefixes:NO];
[rssParser setShouldResolveExternalEntities:NO];
[rssParser parse];
}
type=”kod”>
Bu işlev, motora belirli bir web adresindeki (URL) bir dosya indirmesi ve onu ayrıştırma işlemini başlatması talimatını verir. Uzak sunucuya, sunucunun iPhone/iPad’i bir mobil sürüme yönlendirmeye çalışması durumunda Mac’te çalışan bir Safari olduğumuzu söylüyoruz. Sondaki seçenekler belirli XML dosyalarına özeldir. Çoğu RSS dosyasının ve genel XML dosyasının açık olmasına gerek yoktur.
Hata-Sonucu Kontrol Edin
Sonuç üzerinde bazı temel hata kontrolleri yapın: – (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {
NSString *hataDizesi = [NSString stringWithFormat:@”Error code %i”, [parseError code]];
NSLog(@”XML ayrıştırma hatası: %@”, errorString);
errorParsing=EVET;
}Bu hata denetimi yönlendirmesi, bir hatayla karşılaşırsa ikili bir değer ayarlar. Ne yaptığınıza bağlı olarak burada daha spesifik bir şeye ihtiyacınız olabilir. Hata durumunda işlemden sonra sadece bir kod çalıştırmanız gerekirse,
class=”ql-sözdizimi”>
Bu hata denetimi rutini, bir hatayla karşılaşırsa ikili bir değer ayarlar. Ne yaptığınıza bağlı olarak burada daha spesifik bir şeye ihtiyacınız olabilir. Hata durumunda işlemden sonra sadece bir kod çalıştırmanız gerekiyorsa, o sırada ikili değişken ayrıştırma hatası çağrılabilir.
Alınan İçeriği Analiz Edin
Ardından, program alınan içeriği parçalar ve analiz eder: – (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI nitelikliName:(NSString *)qName öznitelikleri:(NSDictionary * )attributeDict{
currentElement = [elementName copy];
ElementValue = [[NSMutableString alloc] içinde];
Eğer ([elementName isEqualToString:@”item”]) {
öğe = [[NSMutableDictionary alloc] içinde];
}
}
type=”kod”>
XML ayrıştırıcısının eti, biri tek bir öğenin başında çalışan, biri öğenin ayrıştırılmasının ortasında çalışan ve biri öğenin sonunda çalışan üç işlev içerir. Bu örnekte, öğeleri şu başlık altında gruplara ayıran RSS dosyalarına benzer bir dosyayı ayrıştıracağız. öğeler XML dosyası içinde. İşlemin başlangıcında, “item” eleman adını kontrol ediyoruz ve yeni bir grup tespit edildiğinde madde sözlüğümüzü tahsis ediyoruz. Aksi takdirde, değişkenimizi şu değer için başlatırız: – (void)parser:(NSXMLParser *)parser FoundCharacters:(NSString *)string{
[ElementValue appendString:string];
}
type=”kod”>
Karakterleri bulduğumuzda, onları sadece değişkenimize ekliyoruz. ElementValue: – (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI nitelikliAd:(NSString *)qName{
Eğer ([elementName isEqualToString:@”item”]) {
[articles addObject:[item copy]];
} Başka {
[item setObject:ElementValue forKey:elementName];
}
}
type=”kod”>
Ayrıştırma Tamamlandığında Ne Olur?
Program bir elemanı işlemeyi bitirdiğinde, iki şeyden birini yapmalıdır:
- bitiş elemanı ise öğe, grubumuzu bitirdik, bu yüzden sözlüğümüzü makale dizimize ekleyeceğiz.
- eleman değilse öğe, sözlüğümüzdeki değeri, öğenin adıyla eşleşen bir anahtarla ayarlayacağız. (Bu, XML dosyasındaki her alan için ayrı bir değişkene ihtiyacımız olmadığı anlamına gelir. Bunları biraz daha dinamik olarak işleyebiliriz.)
Bu, ayrıştırma rutinimiz için gereken son işlevdir; belgeyi bitirir. Herhangi bir son kodu buraya koyun veya bir hata düzeltme alt yordamı belirtin: – (void)parserDidEndDocument:(NSXMLParser *)parser {
if (errorParsing == HAYIR)
{
NSLog(@”XML işlemi tamamlandı!”);
} Başka {
NSLog(@”XML işlemi sırasında hata oluştu”);
}
}
type=”kod”>
Veriyi sakla
Birçok uygulamanın burada yapmak isteyebileceği şeylerden biri, verileri veya XML dosyasını cihazdaki bir dosyaya kaydetmektir. Bu şekilde, uygulama tekrar yüklendiğinde cihaz internete bağlı değilse, yine de bu bilgilere ulaşabilir. Tabii ki, en önemli kısmı unutamayız: uygulamanıza dosyayı ayrıştırmasını söylemek (ve onu bulması için bir web adresi vermek!). İşlemi başlatmak için bu kod satırını XML işlemeyi yapmak istediğiniz uygun yere ekleyin:
[self parseXMLFileAtURL:@”http://www.webaddress.com/file.xml”];
type=”kod”>
mla apa chicago Alıntınızı Biçimlendirin
Milletler, Daniel. “Xcode’da XML Dosyaları Nasıl Ayrıştırılır.” ThoughtCo, 2 Haziran 2021, Thoughtco.com/parse-xml-files-in-xcode-1994288.
Milletler, Daniel. (2021, 2 Haziran). Xcode’da XML Dosyaları Nasıl Ayrıştırılır. https://www.thinktco.com/parse-xml-files-in-xcode-1994288 adresinden alındı
Milletler, Daniel. “Xcode’da XML Dosyaları Nasıl Ayrıştırılır.” Düşünce Şirketi https://www.thinktco.com/parse-xml-files-in-xcode-1994288 (6 Haziran 2021’de erişildi).