2014-05-06 46 views
1

因此,在互聯網上搜索多天並無休止的夜間磨削我的前額與奶酪刨絲器之後,我來到了一個可能已經被問過的問題的stackoverflow,但我似乎無法把我的頭包在裏面。Objective C從URL中獲取XML

簡而言之,我想要實現的是從Web服務器上的遠程位置獲取XML文件,然後將其轉換爲數組。

到目前爲止,這是我已經得到給多個網站和文件。

NSURL *xmlString = [NSURL URLWithString:@"http://localhost/query.xml"]; 

NSDictionary *dictionary=[[NSDictionary alloc] initWithContentsOfURL:xmlString]; 

NSLog(@"XML is %@",dictionary); 

NSArray *XMLarray=[[dictionary valueForKey:@"Result"] valueForKey:@"Table"]; 

,並在控制檯輸出

XML is (null) 

什麼我做錯了,我怎麼fixey?

在此先感謝:d

+1

它是一個通用的XML文件嗎?只有當XML代表以詞典作爲根創建的plist文件時,您擁有的代碼纔會起作用。 – rmaddy

+0

@rmaddy這只是一個普通的普通XML文件,沒有額外的東西。我怎樣才能讓我的應用程序在沒有plist文件的情況下閱讀它? – SteppingHat

+0

您不能直接在「NSDictionary」或「NSArray」中加載任意XML文件。您需要使用XML解析器並將XML解析爲所需的格式。 – rmaddy

回答

5

有它做到這一點的代碼經典位:Simple XML to NSDictionary Converter

這方面有GitHub上少數實現

這是很容易:

NSURL *URL = [NSURL URLWithString:@"http://localhost/query.xml"]; 
NSData *data = [[NSData alloc] initWithContentsOfURL:URL]; 
NSError *error = nil; 

NSDictionary *dictionary = [XMLReader dictionaryForXMLData:data error:&error]; 

希望有所幫助。

+0

我收到錯誤'使用未聲明的標識符'XMLReader''。我假設我需要導入它,但我是新的xcode/objc,並不知道如何正確地做到這一點 – SteppingHat

+0

@SteppingHat「XMLReader」不是內置的。你需要自己創建類(基於在第一個鏈接的教程中),或者您可以克隆預先完成的版本。 –