NSXMLPARSERを使用して解析しようとしているXMLファイルがあります。xmlは次のように構成されています。
<report>
<Page1>
<row>
<company>
<val>
company 1
</val>
</company>
<TIME1>
<val>
time 1
</val>
</TIME1>
<document>
<val>
document 1
</val>
</document>
</row>
<row>
<company>
<val>
company 2
</val>
</company>
<TIME1>
<val>
time 2
</val>
</TIME1>
<document>
<val>
document 2
</val>
</document>
</row>
</Page1>
</report>
ここで、valは、会社とドキュメントを2つの別々のアイテムとして取得する値です。
次のようにNSXMLPARSERを使用して、会社のvalを正常に解析できます。
- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
currentNodeContent2 = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; }
- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if ([elementname isEqualToString:@"Company"])
{
currentRfp = [rfp alloc];
isStatus = YES;
}
if ([elementname isEqualToString:@"TIME1"])
{
isStatus = NO;
}
}
- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if (isStatus )
{
if ([elementname isEqualToString:@"val"])
{
currentRfp.content2 = currentNodeContent2;
}
if ([elementname isEqualToString:@"val"])
{
currentRfp.dateCreated2 = currentNodeContent2;
}
}
if ([elementname isEqualToString:@"row"])
{
[self.rfps addObject:currentRfp];
currentRfp = nil;
currentNodeContent2 = nil;
}
}
- (void) parser:(NSXMLParser *)parser foundCharacters2:(NSString *)string
{
currentNodeContent2 = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
私はただ学んでいて、おそらく簡単な答えがありますが、私は立ち往生しています