我有一个非常简单的xml文件名称options.xml
<Dat>
<Name>Tom</Name>
<Option>1</Option>
</Dat>
更新:我最终尝试使用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];
}
但这不是保存数据。帮助
答案 0 :(得分:2)
在iOS中编辑XML有点困难。您需要将原始xml解析为模型,然后形成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];
答案 1 :(得分:1)
创建一个本质上是XML“节点”的类。然后在解析器中以与读取它们相同的方式设置这些XML节点的系统。然后搜索该主体并找到您想要更改的元素。更改。然后编写一个遍历这些“节点”对象的函数,并以XML格式写入新的NSString并将该字符串保存到文件中。我知道编写XML文件没有真正简单的方法。我确定有人有一个库可以做到这一点,但我有非常复杂的XML来处理,所以我写了自己的。如果您想要特定的代码,请告诉我,我可以尝试为您提供您可能需要的部分内容。
答案 2 :(得分:1)
您可以使用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);
使用此代码段检查