iPhone SDK: misterio XML, después de agregar nodeforXPath secundario no devuelve nada (encontró una solución hacky)

Tengo un gran misterio aquí,

Tengo una propiedad de documento Gdataxml:

GDataXMLDocument *doc;

Estoy agregando un nuevo elemento al documento, curiosamente, este método a continuación se ve perfecto para otros elementos pero no para el elemento que acabo de agregar:

GDataXMLElement *newValueDefElement = [GDataXMLNode elementWithName:@"valuedefinition"];
[variableElement addChild:newValueDefElement];

y ahora cuando consulto:

NSString *path = [NSString stringWithFormat:@"//inferenceresponse/state/variable[pageId=%d]/valuedefinition",pageID];       
NSArray *valueElement = [self.doc nodesForXPath:path error:nil];

@Now array viene con cero objetos! ¡nuevo elemento agregado NO encontrado! pero puedo verlo en depuración como una cadena xml, ¿cómo demonios no puede encontrar algo que pueda ver que está allí en el registro? Es un problema de caché o un problema de espacio de nombres o un error en GDataXML? nuevamente ... El problema es agregar un nuevo hijo y de alguna manera no se actualiza en el documento, pero puedo obtener los otros elementos bajo la misma raíz cuando uso el mismo estándar de consulta Xpath

en NSlog Puedo ver que el nuevo elemento se agrega a doc.

NSData *xmlData2 = self.doc.XMLData;
NSString *s= [[[NSString alloc] initWithBytes:[xmlData2 bytes] length:[xmlData2 length] encoding:NSUTF8StringEncoding] autorelease];
NSLog(s);

También ¿Cómo puede self.doc.XMLData dar algo diferente a [self.doc nodeForXPath]? así que me engaña pensar que mi documento está bien, pero ¿tal vez he dañado el documento o un espacio de nombres incorrecto al agregar la eliminación de algunos elementos en un método anterior?

my xml comienza así:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<inferenceresponse xmlns="">
<state goalreached="false">
..
..
Actualiza

Acabo de encontrar una solución (hacky); cuando convierto "doc" a NSData con "doc.XMLData" y luego vuelvo a convertir a doc, ¡entonces funciona! pero esto no debería ser una solución real, es lamentable hacer esa conversión de un lado a otro para obtener un objeto de documento correcto. ¿Cuál es el problema aquí? Supongo que no puede arreglar los espacios de nombres para el nuevo hijo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta