이것은 사용자 속성을 검색하는 데 사용하는 코드입니다. 그것은 작동합니다.
NSString* path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"xml"];
NSData *xmlData = [[NSMutableData alloc] initWithContentsOfFile:path];
NSError *error;
GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData
options:0 error:&error];
NSArray *userElements = [doc.rootElement elementsForName:@"user"];
for (GDataXMLElement *userEl in userElements) {
// Attribute
NSString *attribute = [(GDataXMLElement *) [userEl attributeForName:@"id"] stringValue];
NSLog(@"attribute for user is %@", attribute);
// Name
NSArray *names = [userEl elementsForName:@"name"];
if (names.count > 0) {
GDataXMLElement *name = (GDataXMLElement *) [names objectAtIndex:0];
NSLog(@"name for user is %@", name.stringValue);
}
// Rank
NSArray *ranks = [userEl elementsForName:@"rank"];
if (ranks.count > 0) {
GDataXMLElement *rank = (GDataXMLElement *) [ranks objectAtIndex:0];
NSLog(@"rank for user is %@", rank.stringValue);
}
// Do the same for other tags...
}
[doc release];
[xmlData release];
test.xml 파일은 xml 응답에서 검색하는 파일과 동일합니다. 따라서이 스 니펫 코드의 두 번째 줄을 변경해야합니다. 어쩌면 initWithData
NSData
방법을 호출 할 수 있습니다.
원하는 위치에이 코드를 넣을 수 있습니다. 어쩌면 당신은 중앙 파서로 작동하는 다른 클래스를 만들 수 있습니다. 이
편집
이 명령에 대해 이전에이 두 줄을 넣어 도움이되기를 바랍니다.
NSString *valAttribute = [(GDataXMLElement *) [doc.rootElement attributeForName:@"value"] stringValue];
NSLog(@"value attribute for result is %@", valAttribute);
설명은 매우 간단합니다. doc.rootElement
을 사용하면 <result>
에서 </result>
사용자 태그 요소에 대해 'attributeForName'을 사용하여 전체 XML 문서를 검색 할 수 있습니다. 자세한 내용은이 [stackoverflow 링크] (http://stackoverflow.com/questions/3028020/ask-for-an-example-code-for-parsing-xml-and-get-attributes-by-using-gdata- api) –
고마워,하지만 만약 내가'GDataXMLElement * elem = doc.rootElement; NSString * userID = [[elem attributeForName : @ "사용자 ID"] stringValue]; '이것은 null을 반환합니다. – s4lfish
'attributeForName : @ "id"'이 맞습니다. 속성은'id'이며'user id'가 아닙니다. 희망이 도움이됩니다. –