2

私はiphoneを初めて使用します.私はこのxmlレスポンスを持っています.NSXMLパーサーを使用してそれを解析するにはどうすればよいですか?

<MyList>
    <Emp>
      <EmpId>918704ec-4811-45b6-a169-16bae3df3452</EmpId>
    </Emp>
     <Emp>
       <Details>
          <Name>Ravi</Name>
          <EmpId>00000000-0000-0000-0000-00000000</EmpId>
       </Details>
          <EmpId>00000000-0000-0000-0000-00000000</EmpId>
    </Emp>

</MyList>

これから、EmpId(918704ec-4811-45b6-a169-16bae3df3452) と Name(Ravi) の値が必要です。EmpId(00000000-0000-0000-0000-00000000) は必要ありません。

    - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{

if ([elementName isEqualToString:@"List"]) 
{
    arr=[[NSMutableArray alloc] init];
    drr=[[NSMutableDictionary alloc] init]; 

}
srr=[[NSMutableString alloc] init];
} 


- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{


[srr appendString:string];
}
 -(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{

if([elementName isEqualToString:@"EmpId"])
{

    [drr setObject:srr forKey:@"EmpId"];
    [srr release],srr=nil;
    return;
}    

if([elementName isEqualToString:@"Name"])
{

    [drr setObject:srr forKey:@"Name"];
    [srr release],srr=nil;
    [arr addObject:drr]; 

    return;
} 

if([elementName isEqualToString:@"MyList"])
{
   [drr release];

 }

[srr release],srr=nil;

 }

次のような応答が必要です。

  (
  {
   Name="Ravi";
   Id="918704ec-4811-45b6-a169-16bae3df3452";
  }
  )
4

1 に答える 1

0

これは、XML を NSDictionary 形式に変換できるリンクです。プロジェクトに追加する必要がある XMLReader.h と XMLReader.m の 2 つのファイルが含まれており、この形式で必要な場所でコード内のコードを使用します。

NSDictionary *xmlDictionary = [XMLReader dictionaryForXMLString:testXMLString error:&parseError];

// Print the dictionary
NSLog(@"%@", xmlDictionary);

これがあなたを助けることを願っています

于 2012-10-30T08:59:00.953 に答える