Cocoa取代XMLElements

时间:2012-05-29 05:39:37

标签: objective-c cocoa nsxmlelement

如果我有以下示例代码:

NSXMLDocument* doc = [[NSXMLDocument alloc] initWithContentsOfURL: [NSURL fileURLWithPath:@"file2.xml"] options:0 error:NULL];
NSXMLElement* root  = [doc rootElement];
NSArray* objectElements = [root nodesForXPath:@"//object" error:nil];

NSLog (@"doc - %@", doc);

NSXMLElement *c1 = [objectElements objectAtIndex:0];
NSLog (@"c1 --> %@",[c1 stringValue]);

//creating new element
NSXMLElement *c2 = [NSXMLElement elementWithName:@"value" stringValue:@"object new node"];
[c1 replaceChildAtIndex:0 withNode:c2]; 

NSLog (@"New doc - %@", doc);

我正在尝试获取XML元素并将其值更改为另一个(c2)。问题是,在替换新节点时,我将元素名称插入到XML文档中。

所以,如果我有

<element>old value</element>, 

我现在得到:

<element><newElement>new value</newElement></element>

如何编写代码以便

<newElement></newElement> 

不显示?感谢

P.S。甚至更简单的解释方式:

基本上,我想用另一个元素替换Element。所以来自

<e1>data1</e1>

我想要

<e2>data 2</e2>
取而代之。

1 个答案:

答案 0 :(得分:0)

我可能误解了这个问题,但听起来你只是想让第一个元素具有第二个属性?尝试类似:

- (void) method { 
    NSArry* attrs = [c2 attributes];
    [c1 setAttributes: attrs];
}

希望有所帮助。