>

iOS 애플리케이션에서 xml에서 데이터를 읽을 수 있습니다 xml을 읽는 코드 ::

-(NSString *)readxmlFile:(NSString *)fileName ElementName:(NSString *)Element Poisson:(NSInteger *)Index {
    xmlelement = Element;
    NSString *filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:@"xml"]; 
    NSData *myData = [NSData dataWithContentsOfFile:filePath];  
    NSString *str,*docStr;
    if (myData) {  
        str = [[NSString alloc] initWithData:myData encoding:NSASCIIStringEncoding];
    } 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    // the path to write file
    NSString *appFile = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.xml",fileName]];
    NSError *error = nil;
    BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:appFile];
    NSData *myData1 = [NSData dataWithContentsOfFile:appFile];
    if(fileExists)
    {
        NSLog(@"file exist in document");
        if (myData1) {  
            docStr = [[NSString alloc] initWithData:myData1 encoding:NSASCIIStringEncoding];
            xmlparser=[[NSXMLParser alloc] initWithData: myData1];
            [xmlparser setDelegate:self];
            [xmlparser parse];
            NSLog(@"Data>>%@",xmlData);
        } 
    }
    else {
        NSLog(@"file does not exist");
        xmlparser=[[NSXMLParser alloc] initWithData: myData1];
        [xmlparser setDelegate:self];
        [xmlparser parse];
        NSLog(@"Data>>%@",xmlData);
        BOOL success = [str writeToFile:appFile  atomically:YES encoding:NSUTF8StringEncoding error:&error];
        if (!success) {
            NSLog(@"Error: %@", [error userInfo]);
        }
        else {
            NSLog(@"File write is successful");
        }
        NSData *myData1 = [NSData dataWithContentsOfFile:appFile];
        if (myData1) {  
            docStr = [[NSString alloc] initWithData:myData1 encoding:NSASCIIStringEncoding];
        } 
    }
     return [xmlData objectAtIndex:Index];//pasre data from xml based on node name and save in xmlData 
}

하지만 xml을 작성할 수 없지만 (노드 추가 및 노드 값 업데이트) xml 파일에서 노드를 추가하고 노드 값을 업데이트하는 방법을 알려주세요.

  • 답변 # 1

    NSXMLParser는 파서 일뿐입니다. XML을 쓰지 않습니다. XML 스트림을 처리하는 데는 좋지만 전체 덩어리를 한 번에 얻는다면 그리 좋지 않습니다.

    Google은 GDataXmlNode라는 훌륭한 XML 읽기/쓰기 클래스를 작성했습니다. 사용 방법에 대한 블로그 게시물입니다. http://www.raywenderlich.com/725/how-to-read-and-write-xml-documents-with-gdataxml

    NSXMLParser를 사용하는 것보다 훨씬 좋습니다.

관련 자료

  • 이전 leiningen - 사전 조건을 포함하여 Clojure 어설 션을 비활성화하는 방법은 무엇입니까?
  • 다음 r - 그룹 조건이있는 누적 n_distinct