2012-09-25 2 views
0
나는 WCF 서비스에서 XML 파일을 호출하고 아이폰에서 XML의 내용을 구문 분석 할 필요가

을받지 못했습니다. 서비스 URL을 호출 할 수 있지만 NSXMLParser를 사용하여 구문 분석 할 때 XML에서 patricular 특성 값을 가져올 수 없습니다. XCode에서 ViewController 응용 프로그램을 사용하고 있습니다.XML 구문 분석은 응답

내 XML 파일은 다음과 같다 :

<GetCompanyResponse xmlns="http://schemas.datacontract.org/2004/07/DomainModel" 
xmlns:i="http://www.w3.org/2001/XMLSchema-  
<CompanyList> 
    <Company> 
     <Id>b9ca2e32-ce88-4d72-99ce-9bc592511e85</Id> 
    </Company> 
</CompanyList> 




    NSString *urlString = [NSString stringWithFormat:@"http://192.168.0.107:8732/Design_Time_Addresses/IServices/ 

     AppointmentService/json/GetCompany"; 
     NSURL *jsonUrl =[NSURL URLWithString:urlString]; 
     NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:jsonUrl]; 
     [parser setDelegate:self]; 
     [parser setShouldProcessNamespaces:NO]; 
     [parser setShouldReportNamespacePrefixes:NO]; 
     [parser setShouldResolveExternalEntities:NO]; 

     [parser parse]; 
     [parser release]; 

     - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
     namespaceURI:(NSString *)namespaceURI qualifiedName: 
     (NSString *)qName attributes:(NSDictionary *)attributeDict 
     { 

      if ([elementName isEqualToString:@"Company"]) { 
      NSString *name=[attributeDict objectForKey:@"Id"]; 

     } 
     } 

을하지만 '이름'의 값을 확인하는 경우는 nil을 반환한다. 나는 틀린 것을 모른다. 무엇을 바꾸어야합니까? ID 속성의 값을 얻으려면 어떻게해야합니까?

도움을 주시면 감사하겠습니다. 미리 감사드립니다.

답변

0

ID는 이름의 속성되지 않습니다. didEndElement에 코드 삽입 : strVal NSString을 .h에 정의합니다.

Inside found character: 
{ 
    strVal=string; 
} 

Inside parserDidEndElement method: 
    { 

     if ([elementName isEqualToString:@"Id"]) { 
     NSString *name=strVal; 

    } 
    } 

이 방법이 유용 할 것입니다.

+0

여전히 VXtreme은 ID에 대해 반환되는 nil 값을 다음과 같이 작성했습니다. 파서 didStartElement {if ([elementName isEqualToString : @ "Id"]) { NSString * name = [attributeDict objectForKey : @ "Id"]; } 파서 foundCharacters : { strVal = string; } 파서 didEndElement {if ([요소 이름 isEqualToString : @ "Id"]) { NSString * name = strVal;} 여전히 nil 값을 반환하고 있습니다 .. 제발 내가 잘못 가고 있다고 말해주십시오. – cutiepie

+0

먼저 didStartElement 안에 아무 것도 쓰지 않아도됩니다. 두 번째로 .h 파일에 strVal을 정의 했습니까? 발견 된 문자 안의 로그를 확인하십시오. NSString * name = strVal 뒤의 print 값; 성명서를 받고 뭔가를 얻고 있니? –

+0

예. strVal을 .h file.ok에 정의했습니다. didStartElement.Eventh에서 코드를 제거했습니다 .Entough를 얻을 수 없습니다. 콘솔 영역의 이름을 보려면 출력 영역을 checkin으로 보는 것이 좋습니다. 이름 설명 인쇄 : (gdb) – cutiepie