XCODE NSXML更改元素值 [英] XCODE NSXML changing the element value

查看:42
本文介绍了XCODE NSXML更改元素值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个非常简单的xml文件,名称为options.xml

I have a very simple xml file by name options.xml

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

使用NSXML我正在尝试将"Tom"更改为"Jim"并保存文件.我怎样才能做到这一点.我阅读了许多文档,没有直接的解决方案.有人可以帮我提供代码吗?

更新:我最终尝试使用Gdatasxml

Using NSXML I am trying to change "Tom" to "Jim" and save the file. How can I do that. I read many document and there is no straight forward solution. Can some one help me with the code ?

update: I ended up in trying with 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];


}

但这不会保存数据.帮助.

But this is not saving the data. Help.

推荐答案

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

Editing XML is a little difficult in iOS. You need to parse the original xml to a model and then form the xml.

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

You can make use of 3rd party library such as GDataXML for forming XML from a data source.

//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];

这篇关于XCODE NSXML更改元素值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆