سؤال

If I have the following example code:

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);

I am trying to get an XML element and change its value to another (c2). The problem is that with the new node replacing, I am getting the element name as well inserted into the XML Document.

So, if I have

<element>old value</element>, 

I am now getting:

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

How can I program the code so that

<newElement></newElement> 

do not get displayed? Thanks

P.S. Even simpler way of explaining:

Basically, I want to replace an Element with another element. So from

<e1>data1</e1>

I want to have

<e2>data 2</e2>

in its place.

هل كانت مفيدة؟

المحلول

I may be misunderstanding the question but it sounds like you are just trying to make the first element have the second ones attributes? Try something like:

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

Hope that helps.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top