IPhone SDK: помогите мне с анализом xml с помощью TBXML - PullRequest
1 голос
/ 03 апреля 2011

У меня есть соединение с веб-сервисом, полученные данные не равны "nil", и ответ SOAP UI показывает это; <soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" > -<soap:Body> -<GroupResponse xmlns="http://tempuri.org/"> -<GroupResult> -<GroupClass> -<Groupid>48937</Groupid> -<GroupName>test</GroupName> -<Members> -<MemberClass> -<memberID>4699860</memberID> -<memberNAME>nazan</memberNAME> -<memberLASTNAME>torun</memberLASTNAME> -<memberPHONE>292930412452</memberPHONE> -<memberBIRTH>02.04.1980</memberBIRTH> -<memberMARRIAGE>01.11.2009</memberMARRIAGE> </MemberClass> -<MemberClass> ...has lots of member как я могу получить их с TBXML? это мой код, но он дает сбой ..

NSArray *propertyArray = [NSArray arrayWithObjects:@"Members",@"memberID",@"memberNAME",@"memberLASTNAME",@"memberPhone",@"memberBIRTH",@"memberMARRIAGE",nil];

TBXML * tbxml = [[TBXML alloc] initWithXMLData:GrupRecievedData];
        TBXMLElement *root = tbxml.rootXMLElement;
        if (root) {
            NSLog(@"root: %@",[TBXML elementName:root]);

            TBXMLElement *item = [TBXML childElementNamed:@"soap:Body" parentElement:root];
            TBXMLElement *item1 = [TBXML childElementNamed:@"GroupResponse" parentElement:item];
            TBXMLElement *item2 = [TBXML childElementNamed:@"GroupResult" parentElement:item1];
            TBXMLElement *item3 = [TBXML childElementNamed:@"Groupid" parentElement:item2];
            TBXMLElement *item4 = [TBXML childElementNamed:@"GroupName" parentElement:item3];
            TBXMLElement *item5 = [TBXML childElementNamed:@"Members" parentElement:item4];

Я пытался проанализировать объекты в массиве, но я вылетал на "TBXMLElement *item1 = [TBXML childElementNamed:@"GroupResponse" parentElement:item];" я ничего не имею о решении этой проблемы ..

Ответы [ 2 ]

1 голос
/ 04 апреля 2011

Поместите точку останова в root и в окне отладчика разверните root, посмотрите, есть ли у вас childElement soap: Body, затем разверните childElement soap: Body, посмотрите, есть ли у вас childElement GroupResponse..Что из отправленного вами XML-кода, я попробовал, он работает нормально, пока Groupid , Groupid, GroupName, члены - это братья и сестры, MemberClass - это firstChild of Member, MemberId - это firstChild of memberclass, MemberName, MemberPhone.etc - это nextSiblings of MemberId. enter image description here

0 голосов
/ 04 апреля 2011

Вы пытались установить точку останова и пошагово пройти по коду, чтобы увидеть, что на самом деле возвращает каждый вызов? Кроме того, поможет ошибка, с которой он падает. Мое первое предположение было бы, что [TBXML childElementNamed:@"soap:Body" parentElement:root] возвращает ноль. Затем на следующей строке вы ищете дочерний элемент нулевого «элемента», который, вероятно, не нравится коду TBXML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...