당신은 NSXMLParser
를 사용해야합니다. 코드에서 인스턴스를 생성하고 구문 분석하도록 지시 :
: 처리 네임 스페이스에
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict{
/* handle namespaces here if you want */
if([elementName isEqualToString:@"puid"]){
NSString * ID = [attributeDict objectForKey:@"id"];
// use ID string, or store it in an ivar so you can access it somewhere else
}
}
주 :
NSData * XMLData = [myXMLString dataUsingEncoding:NSUnicodeStringEncoding];
NSXMLParser * parser = [[NSXMLParser alloc] initWithData:XMLData];
[parser setDelegate:self];
[parser setShouldProcessNamespaces:YES]; // if you need to
[parser parse]; // start parsing
은 다음 구문 분석하는 동안 콜백을 얻을 수 NSXMLParserDelegate
의 메소드를 구현해야 네임 스페이스가 설정된 경우 elementName
은 정규화 된 이름이므로 접두사를 사용할 수 있습니다 (예 : mip:puid
). Mac의 경우 NSXMLNode
은 편리한 클래스 메서드 인 localNameForName:
과을 사용해야합니다.문자열의 두 부분을 가져옵니다.
또한 NXXMLParser
대리자 메서드 parser:didStartMappingPrefix:toURI:
및 parser:didEndMappingPrefix:
을 원할 수도 있습니다.
NSXMLParser
에 의해 반환되는 이름은 문자열의 접두사와 정확히 일치한다는 점에 유의하십시오 (앞에 접두사가 있는지 여부와 관련하여). 따라서 속성의 이름은 mip:id
인 경우는 드뭅니다. 그러나 강건하기를 원한다면이 점을 확인해야합니다.
Mac 또는 iPhone을 사용하십니까? iPhone에는 NSXMLParser 만 있지만 Mac에는 NSXMLDocument (XPath를 지원함)가 있습니다. 또한 네임 스페이스가 있지만 어디에서도 사용되지 않습니다. – JeremyP