이 복잡한 XML이 내 서버에서 반환되었으므로 나중에 사용할 수 있도록 객체로 파싱하는 데 도움이 필요합니다. NSXMLParser를 사용하여 복잡한 XML 구조 구문 분석
이
내가 다음 시도하고 그 만드는 경우 .. 자신의 dictionarys에 XML의 각 요소의 "ObjectForKey/S"의 모든 구문 분석 NSXMLParser를 사용하고<Eng>
<Result >
<Series >
<Link/>
<FMF/>
<AlsoLink/>
<Plugins/>
</FMF>
<Sheet >
<Spaces>
<Spacing >
<Names/>
</Spacing>
<Spacing >
<Names/>
</Spacing>
</Spaces>
</Sheet>
</Series>
</Result>
</Eng>
같은 XML 보이는 것입니다 감각.
이 내 코드는 현재
#pragma mark - Parsing lifecycle
- (void)startTheParsingProcess:(NSData *)parserData
{
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:parserData]; //parserData passed to NSXMLParser delegate which starts the parsing process
[parser setDelegate:self];
[parser parse]; // starts the event-driven parsing operation.
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if([elementName isEqualToString:@"Series"]){
parsedMutableDictionary = [[NSMutableDictionary alloc] initWithDictionary:attributeDict];
self.parsedDataArrayOfDictionaries = [NSMutableArray arrayWithCapacity:8];
if ([elementName isEqualToString:@"Link"]) {
}
if ([elementName isEqualToString:@"FMF"]) {
if ([elementName isEqualToString:@"AlsoLink"]) {
}
else if ([elementName isEqualToString:@"Plugins"]) {
}
}
else if ([elementName isEqualToString:@"Sheet"]) {
if ([elementName isEqualToString:@"Spaces"]) {
if ([elementName isEqualToString:@"Spacing"]) {
if ([elementName isEqualToString:@"Names"]) {
}
}
}
}
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if([elementName isEqualToString:@"Series"]){
[parsedDataArrayOfDictionaries addObject:parsedMutableDictionary];
if ([elementName isEqualToString:@"Link"]) {
}
if ([elementName isEqualToString:@"FMF"]) {
if ([elementName isEqualToString:@"AlsoLink"]) {
}
else if ([elementName isEqualToString:@"Plugins"]) {
}
}
else if ([elementName isEqualToString:@"Sheet"]) {
if ([elementName isEqualToString:@"Spaces"]) {
if ([elementName isEqualToString:@"Spacing"]) {
if ([elementName isEqualToString:@"Names"]) {
}
}
}
}
}
// parsedMutableDictionary = nil;
}
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError
{
NSLog(@"Paser Error = %@", parseError);
UIAlertView *errorAlert = [[UIAlertView alloc] initWithTitle:@"Error!" message:@"A parsing failure occurred." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[errorAlert show];
}
//TODO: Look into how to use this method over multiple views. i.e.(other requests such as keycode, advanced)
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
// display values
NSArray *filteredArray = parsedDataArrayOfDictionaries;
NSLog(@"%@", filteredArray);
}
나는 데 문제처럼 찾고있는 것이다 것은 내가 자신의 객체에해야 이해 해달라고입니다 ... 이러한 값 중 일부는 내가 할 수있는 돌아올 때 여러 개의 간격 요소가 있고 그걸 처리하는 방법을 모르겠다. ...
내 머리가이 문제를 해결하기 위해 고심 중이다.
감사합니다.
당신이 태그 사이의 문자열을 얻을 것이다, 그래서 당신은 .... NSXMLParser를 사용하는
이 정보가 도움이 될지 모르겠다.하지만이 코드를 던져 버리고 투표를 거절하면 안된다.하지만 어쨌든 XML 출력을 JSON으로 바꿀 수 있을까? JSON 구문 분석은 XML에 적합합니다. – Jordan
unfortunatly not .. 나는 의견을 주신 것에 대해 감사 드려야 만합니다. – HurkNburkS