我需要从WCF服务调用XML文件并解析iPhone中的XML内容。我能够调用服务URL但是在使用NSXMLParser进行解析时,我无法获得XML中的patricular属性值。我正在使用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属性的值?
任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:0)
id不是名称的属性。将代码放在didEndElement中: 在.h;中定义strVal NSString
Inside found character:
{
strVal=string;
}
Inside parserDidEndElement method:
{
if ([elementName isEqualToString:@"Id"]) {
NSString *name=strVal;
}
}
这对你有用。