IPhone SDK:帮我讲解使用TBXML进行xml解析

时间:2011-04-03 19:59:17

标签: iphone xml-parsing

我与网络服务有联系,收到的数据不等于“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 个答案:

答案 0 :(得分:1)

在root上放置一个断点,在调试器窗口中展开root看看你是否有childElement soap:Body然后展开childElement soap:Body看看你是否有childElement GroupResponse ..从你发布的XML我试过它它工作正常直到Groupid ,Groupid,GroupName,成员是兄弟姐妹,MemberClass是成员的第一个成员,MemberId是成员类的第一个成员,MemberName,MemberPhone.etc是MemberId的nextSiblings。 enter image description here

答案 1 :(得分:0)

您是否尝试过设置断点并单步执行代码以查看每次调用实际返回的内容?此外,它崩溃的错误将有所帮助。我的第一个猜测是[TBXML childElementNamed:@"soap:Body" parentElement:root]返回零。然后在下一行,您正在寻找TBXML代码可能不喜欢的nil“item”的子项。