0

如果我有以下示例代码:

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> 

不显示?谢谢

PS 更简单的解释方式:

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

<e1>data1</e1>

我希望有

<e2>data 2</e2>

在它的位置。

4

1 回答 1

0

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

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

希望有帮助。

于 2012-05-29T05:51:00.653 回答