私はこのXMLファイルを持っています:
<continents>
<continent1 id="EUR" name="EUROPE"></continent1>
<continent2 id="AME" name="AMERICA"></continent2>
</continents>
NSXMLParser で作成しようとしましたが、同時に結果を表示できません。誰かが私を助けることができる touchXML で試してみませんか? ありがとう。
私はこのXMLファイルを持っています:
<continents>
<continent1 id="EUR" name="EUROPE"></continent1>
<continent2 id="AME" name="AMERICA"></continent2>
</continents>
NSXMLParser で作成しようとしましたが、同時に結果を表示できません。誰かが私を助けることができる touchXML で試してみませんか? ありがとう。
「ヨーロッパ」と「アメリカ」はタグの属性です。タグで「名前」として定義された属性。NSXMLParser解析するイベント駆動型の方法に慣れる必要があります。基本的NSObjectに、のデリゲートとなるサブクラスを作成し、NSXMLParser要素に遭遇すると、カスタム オブジェクトのデリゲート メソッドを呼び出します。この非常に単純な XML は、学習するのに最適な例です。例えば。
このコードは ARC を使用しています。
SimpleExampleParse.h:
@interface SimpleExampleParse : NSObject <NSXMLParserDelegate>
@property (strong, nonatomic) NSMutableArray *continents;
-(id)initWithString:(NSString *)stringToParse;
@end
SimpleExampleParse.m:
#import "SimpleExampleParse.h"
@implementation SimpleExampleParse{
NSXMLParser *myParser;
}
@synthesize continents;
-(id)initWithString:(NSString *)stringToParse{
if ((self = [super init])){
myParser = [[NSXMLParser alloc] initWithData:[stringToParse dataUsingEncoding:NSUTF8StringEncoding]];
myParser.delegate = self;
self.continents = [[NSMutableArray alloc] init];
[myParser parse];
}
return self;
}
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
// Check to see if this element has an attribute "name".
NSString *name = [attributeDict objectForKey:@"name"];
// If name is not nil add it to our Array
if (name) [continents addObject:name];
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
// We don't care your XML contains no content
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
// We don't care your XML contains no content
}
@end
このクラスは次のように使用されます。
NSString *stringToParse = @"<continents><continent1 id=\"EUR\" name=\"EUROPE\"></continent1><continent2 id=\"AME\" name=\"AMERICA\"></continent2></continents>";
SimpleExampleParse *parser = [[SimpleExampleParse alloc] initWithString:stringToParse];
NSLog(@"contenents %@",parser.continents);
ログからの出力は次のようになります。
contenents (
EUROPE,
AMERICA
)
目の前で何かが働いているので、時間をかけてそれを研究し、それがどのように機能するかを調べてください.