0

我需要从 WCF 服务调用 XML 文件并在 iPhone 中解析 XML 的内容。我可以调用服务 URL,但是在使用 NSXMLParser 解析时,我无法在 XML 中获得特定的属性值。我在 XCode 中使用 ViewController 应用程序。

我的 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"];

        }
        }

但是当我检查 'name' 中的值时,它返回 nil。我不知道怎么了。我应该改变什么?如何获取 ID 属性的值?

任何帮助,将不胜感激。提前致谢。

4

1 回答 1

0

id 不是名称的属性。将代码放入 didEndElement:在 .h 中定义 strVal NSString;

Inside found character:
{
   strVal=string;
}

Inside parserDidEndElement method:
     {

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

    }
    }

这对你有用。

于 2012-09-25T07:27:14.660 回答