2015-01-23 3 views
2

XML 파싱을 사용하여 xcode에서 모두 검색 한 다음 배열에 모든 항목을 저장하려는 5 개의 항목 (각각 제목과 URL이 있음)이있는 XML 파일이 있습니다. 그래서 응용 프로그램에서 사용할 수 있습니다. 내 모든 코드를 보여 드리겠습니다.xcode에서 XML 데이터 구문 분석 및 저장

XML 파일 여기

<data> 
<item> 
<title>Eggs</title> 
<link> 
http://URL/ios/category.php?cat_id=14 
</link> 
</item> 
<item> 
<title>Bakery</title> 
<link> 
http://URL/ios/category.php?cat_id=15 
</link> 
</item> 
<item> 
<title>Bread</title> 
<link> 
http://URL/ios/category.php?cat_id=16 
</link> 
</item> 
<item> 
<title>Cakes, Pies Patisserie</title> 
<link> 
http://URL/ios/category.php?cat_id=17 
</link> 
</item> 
<item> 
<title>Specialty Breads</title> 
<link> 
http://URL/ios/category.php?cat_id=119 
</link> 
</item> 
</data> 

여기에 엑스 코드에 지금 내 헤더 파일

#import "XMLStringFile.h" 

@interface MyViewController : UIViewController<NSXMLParserDelegate>{ 
    NSMutableArray *rssOutputData; 
    NSMutableString *nodecontent; 
    NSXMLParser *xmlParserObject; 
    XMLStringFile *xmlStringFileObject; 
} 

입니다

여기
rssOutputData = [[NSMutableArray alloc]init]; 
    NSData *xmlData=[[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:@"http://URL/mycategories.xml"]]; 
    xmlParserObject =[[NSXMLParser alloc]initWithData:xmlData]; 
    [xmlParserObject setDelegate:self]; 
    [xmlParserObject parse]; 

모든 구문 분석 방법

내있는 viewDidLoad 코드 여기

은 XMLStringFile.h 및 XMLStringFile.m입니다

#import "XMLStringFile.h" 
@implementation XMLStringFile 
@synthesize xmllink,xmltitle; 
-(void)dealloc 
{ 
} 

가 지금은 별도의 두 내 두 항목을 저장할 XMLStringFile.h

#import <Foundation/Foundation.h> 

@interface XMLStringFile : NSObject { 
    NSString *xmllink,*xmltitle; 
} 
@property(nonatomic,retain)NSString *xmllink,*xmltitle; 
@end 

그리고 XMLStringFile.m 파일 배열 제목 및 링크를 누른 다음 미래에 그 배열에서 그들을 검색하고 싶습니다. 도움이 필요하면 어떻게해야하는지 알려주세요. 지금은 검색된 데이터를 저장하는 xmltitle과 xmllink이지만 다른 함수에서 사용하는 경우 마지막 전체 nslog뿐입니다.

+1

왜 중복 : http://stackoverflow.com/questions/28103948/save-retrieving-data-from-xml-parsing

NSString *linkText = [[[[dict valueForKey:@"data"] valueForKey:@"item"] valueForKey:@"link"] valueForKey:@"text"]; linkText = [linkText stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 

귀하의 출력은 사전입니까? – Larme

+0

하나가 삭제되었습니다. – user2966615

+0

내 URL을 알려주시겠습니까? 내가 당신을 도울 수. –

답변

3

ViewDidLoad 방법에서 다운로드 XMLReader

.

- (void)viewDidLoad { 

    NSData *xmlData=[[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:@"http://cms.proxiclients.com/choithrams/mycategories.xml"]]; 

    NSString *XMLString = [[NSString alloc]initWithData:xmlData encoding:NSUTF8StringEncoding]; 

    XMLString = [XMLString stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 

    NSDictionary *dict = [XMLReader dictionaryForXMLString:XMLString error:nil]; 

    NSLog(@"== %@",dict); 

    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

다음과 같이 사전 값을 얻을 수 있습니다.

enter image description here

+0

모든 코드가 업데이트되었습니다. XMLReader를 다운로드하고 XMLReader를 다운로드합니다.이 두 파일을 프로젝트에 추가 했으므로 코드를보고 정확히 무엇을해야하는지 알려주세요. – user2966615

+0

참고 :이 메서드는 코드 –

+0

에서 NSXmlParserDelegate 메서드를 제거합니다. NSString * linkText = [[[dict valueForKey : @ "data"] valueForKey : @ "item"] valueForKey : @ "link"] valueForKey : @ "text"]; 데이터를 얻습니다 ...... 내 출력 nesscaryParsedata == ( "8.0", "2.0", "315.0", "145.0 " ) 레이블에서 볼 필요가 있습니다. 어떻게 도와주세요. – SANTOSH