XCODE NSXML更改元素值

我有一个非常简单的xml文件的名字options.xml

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

使用NSXML我试图将“Tom”更改为“Jim”并保存该文件。 我怎样才能做到这一点。 我读了很多文件,没有直接的解决scheme。 有人可以帮助我的代码?

更新:我最终尝试与Gdatasxml

  -(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]; } 

但是这不是保存数据。 帮帮我。

在iOS中编辑XML有点困难。 您需要将原始xmlparsing为模型,然后形成xml。

您可以使用第三方库(如GDataXML)从数据源中形成XML。

 //Edited user info saved in a dictionary NSDictionary *dictionary = @{@"Name": @"Jim", @"Option":@"1"}; GDataXMLElement *rootElement = [GDataXMLElement elementWithName:@"Dat"]; [dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { GDataXMLElement *element = [GDataXMLElement elementWithName:key stringValue:obj]; [rootElement addChild:element]; }]; //xml document is formed GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithRootElement:rootElement]; NSData *xmlData = document.XMLData; NSString *filePath = [self savedXMLPath]; //XML Data is written back to a filePath [xmlData writeToFile:filePath atomically:YES]; 

创build一个基本上是XML“节点”的类。 然后在您的parsing器中,以与读取它们相同的方式设置这些XML节点的系统。 然后search该主体并find您想要更改的元素。 更改。 然后编写一个函数,通过这些“节点”对象,并写入一个新的XML格式的NSString,并将该string保存到文件。 我知道编写XML文件并不容易。 我确定有人有一个库在那里做,但我有非常复杂的XML来处理,所以我写了我自己的。 如果你想要特定的代码让我知道,我可以尝试给你你可能需要的部分。

您可以使用GDATAXML更改XML节点这里是工作代码片段

 NSString *XMLString = @"<Dat><Name>Tom</Name><Option>1</Option></Dat>"; NSError *error = nil; GDataXMLElement *newElement = [[GDataXMLElement alloc] initWithXMLString: XMLString error: &error]; NSLog(@"New element: %@ error: %@", newElement, error); if(nil == error) { GDataXMLElement *childElement = [[newElement elementsForName: @"Name"] objectAtIndex: 0]; [childElement setStringValue:@"Jim"]; childElement = [[newElement elementsForName: @"Option"] objectAtIndex: 0]; [childElement setStringValue:@"2"]; } NSLog(@"New element now: %@", newElement); 

使用此代码片段进行检查