2013-06-21 33 views
0

我想更新一個xml文件。建議後我最終選擇了GdataXml。 所以我想更新options.xml文件。GDataXML更新xml數據

原始文件

<Dat> 
    <Name>Tom</Name> 
    <Option>1</Option> 
</Dat> 

我需要改變「湯姆」,以「吉姆」,並保存在同一文件

這裏是我試過的代碼。

-(void)saveToXML 
{ 
NSString* path = [[NSBundle mainBundle] pathForResource:@"options" ofType:@"xml"]; 

NSData *xmlData = [[NSMutableData alloc] initWithContentsOfFile:path]; 
NSError *error; 
GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData options:0 error:&error]; 

GDataXMLElement *rootElement = [GDataXMLElement elementWithName:@"Dat"]; 

NSArray *mySettings = [doc.rootElement elementsForName:@"Dat"]; 

for (GDataXMLElement *mySet in mySettings) 
{ 
    NSString *name; 
    NSArray *names = [mySet elementsForName:@"Name"]; 
    if (names.count > 0) 
    { 
     GDataXMLElement *childElement = (GDataXMLElement *) [names objectAtIndex:0]; 
     name = childElement.stringValue; 
     NSLog(childElement.stringValue); 
     [childElement setStringValue:@"Jim"]; 
    } 
} 

[xmlData writeToFile:path atomically:YES]; 


} 

但是這不是更新options.xml文件。有人可以幫助嗎?

+0

你的文件位於哪裏? –

回答

2

代碼的缺失行,你要找的是

NSData *xmlData = doc.XMLData; 
Anupdas answer

你的最後一個問題。您正在將文件讀入內存,使用該內存初始化新對象,更新該新對象,然後將原始文件的內存寫入新文件位置。所以基本上你正在讀一個文件,然後將相同的文件寫回到文件位置。

+0

感謝普茨。就是這樣。 – user1771823

+0

然後,您可能想要接受上一個問題中的Anupdas答案,因爲這是他提供解決方案的代碼。 – Putz1103

+0

當然...再次感謝 – user1771823