XCODE NSXML改变元件值(XCODE NSXML changing the element

2019-10-18 06:29发布

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

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

使用NSXML我试图改变“汤姆”,以“吉姆”,并保存文件。 我怎样才能做到这一点。 我看了很多文件并没有直接的解决方案。 有人可以帮助我的代码?

更新:我结束了与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];


}

但是,这是不是在保存数据。 救命。

Answer 1:

编辑XML是iOS中有点困难。 您需要将原始的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];


Answer 2:

创建一个类,本质上是一个XML“节点”。 然后在你的解析器设置这些XML节点的相同方式的系统在您阅读。 然后通过该机构搜索和发现你想改变的元素。 更改。 然后写,通过这些“节点”的对象去和写入XML格式的新的NSString功能并保存该字符串的文件。 有没有真正的简单的方法,我知道的写XML文件。 我敢肯定有人有图书馆在那里做,但我有非常复杂的XML的处理,所以我写了我自己。 如果您想具体的代码让我知道,我可以试着给你的,你可能需要什么零件。



Answer 3:

您可以使用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);

通过使用此代码段检查



文章来源: XCODE NSXML changing the element value