nodeForXPath не возвращает никаких узлов: TouchXML - PullRequest
1 голос
/ 25 апреля 2011

Я использую веб-сервис, использующий TouchXML, и не могу прочитать узлы в соответствии с руководством.Я получаю элемент CXMLDocument, однако мой вызов nodeForXPath всегда возвращает NULL.Что может быть не так?

Код синтаксического анализа XML

NSMutableArray *res = [[NSMutableArray alloc] init];
NSData* valueData=[value dataUsingEncoding:NSUTF8StringEncoding];

    // Do something with the CXMLDocument* result
    CXMLDocument *result = [[[CXMLDocument alloc] initWithData:valueData options:0 error:nil] autorelease];

    NSArray *nodes = NULL;


    nodes = [result nodesForXPath:@"//Outputs" error:nil];

    NSLog (@"Nodes is %@\n", nodes);

    for (CXMLElement *node in nodes) {
        NSLog (@"Test");
        NSMutableDictionary *item = [[NSMutableDictionary alloc] init];
        int counter;
        NSLog (@"Child Count is %@\n",[node childCount]);
        NSLog (@"Child node is%@\n",[[node childAtIndex:0] stringValue]);
        for(counter = 0; counter <= [node childCount]; counter++) {
            //  common procedure: dictionary with keys/values from XML node
            [item setObject:[[node childAtIndex:counter] stringValue] forKey:[[node childAtIndex:counter] name]];


        }


        //[item setObject:[[node attributeForName:@"id"] stringValue] forKey:@"id"];  

        [res addObject:item];
        [item release];
    }

    //  and we print our results
    NSLog(@"%@", res);
    [res release];


}

XML:

    <Nodes>
    <Inputs>
        <name>TestProgram</name>
        </Inputs>
        <Outputs>
            <ReturnCode>0</ReturnCode>
            <ReturnMessage>Success</ReturnMessage>
            <NameDetails attr1="value1">Test Program</NameDetails>
            <NameInstance attr1="value1">
            <NameCharacteristics>
                <Dob>04-25-2011</Dob>
            </NameCharacteristics>
            </NameInstance>
        </Outputs>
</Nodes>

nodeForXPatch для // Выходы всегда возвращают NULL.Я хочу получить значение узла.Я попытался заменить Outputs на Dob и все еще получить пустой набор.

...