2013-06-21 36 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