2011-07-08 19 views
2

私は新しいiPhone開発者です。xmlからデータを読み取ることができます。xml :: - (NSString *)readxmlFile:(NSString *)fileName ElementName:(NSString *)Element Poisson:(NSInteger *)インデックス{ xmlelement =要素; NSString * filePath = [[NSBundle mainBundle] pathForResource:ファイル名ofType:@ "xml"];ノード値を更新してノードを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ファイル内のノード値を更新する方法を私に導くてください。 ありがとうございます

答えて

0

NSXMLParserは単なるパーサーです。 XMLを記述しません。 XMLのストリームを扱うのに最適ですが、チャンク全体を一度に取得してもそれほど役に立ちません。

Googleは、GDataXmlNodeという素晴らしいXML読み取り/書き込みクラスを作成しました。ここでは、それを使用する方法についてのブログの投稿です。 http://www.raywenderlich.com/725/how-to-read-and-write-xml-documents-with-gdataxml

NSXMLParserを使用するよりもはるかに良いです。

関連する問題