从XML文件
问题描述:
我的XML格式是这样创建磁盘阵列:从XML文件
<Rows>
<Row>
<style>String</style?
<thumbnail>String</thumbnail>
</Row>
<Row>
<style>String</style?
<thumbnail>String</thumbnail>
</Row>
</Rows>
如何创建一个NSMutableArray这样的({风格=“值”;缩略图=“值”;} ... ..)
这里是我的代码:
-(void) parser:(NSXMLParser *) parser didStartElement:(NSString *) elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
if ([elementName isEqualToString:@"style"]) {
element = [NSString stringWithString:elementName];
if (!soapResults) {
soapResults = [[NSMutableString alloc] init];
}
elementFound = YES;
}
if ([elementName isEqualToString:@"thumbnail1"]) {
element = [NSString stringWithString:elementName];
if (!soapResults) {
soapResults = [[NSMutableString alloc] init];
}
elementFound = YES;
}
}
-(void)parser:(NSXMLParser *) parser foundCharacters:(NSString *)string
{
if (elementFound) {
[soapResults appendString:string];
}
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI: (NSString*)namespaceURI qualifiedName:(NSString *)qName
{
if ([elementName isEqualToString:@"style"]) {
[rowDict setValue:soapResults forKey:@"style"];
elementFound = NO;
soapResults = nil;
}
if ([elementName isEqualToString:@"thumbnail1"]) {
[rowDict setValue:soapResults forKey:@"thumbnail1"];
elementFound = NO;
soapResults = nil;
}
}
我越来越如果我做这样的格式错误,请帮我在广告
谢谢万斯。
答
创建一个对象类让利说SampleObj
* SampleObj.h *
@interface SampleObj : NSObject
{
NSString *style;
NSString *thumbnail;
}
@property (nonatomic,retain) NSString *style,*thumbnail;
* SampleObj.m *
@implementation SampleObj
@synthesize style,thumbnail;
//dealloc your synthesized value;
做解析的源代码像这样。
NSArray *array=[theXML componentsSeparatedByString:@"<Rows>"];
for(int i=1;i<[array count];i++)
{
NSArray *arrayRow=[theXML componentsSeparatedByString:@"<Row>"];
for(int j=1;j<[arrayRow count];j++)
{
SampleObj *custobj = [[SampleObj alloc] init];
NSString *str=[arrayRow objectAtIndex:i];
NSArray *arr1=[str componentsSeparatedByString:@"<style>"];
NSString *data=[arr1 objectAtIndex:1];
NSRange ranfrom=[data rangeOfString:@"</style>"];
custobj.style =[data substringToIndex:ranfrom.location];
arr1=[str componentsSeparatedByString:@"<thumbnail>"];
data=[arr1 objectAtIndex:1];
ranfrom=[data rangeOfString:@"</thumbnail >"];
custobj.thumbnail=[data substringToIndex:ranfrom.location];
[yourarray addObject:custobj];
[custobj release]
}
}
,如果你想使用对象:
SampleObj *custobj = [yourarray objectAtIndex:rowPosition];
NSLog(@"style : %@", custobj.style);
NSLog(@"thumbnail : %@", custobj.thumbnail);
希望这将有助于。对于任何错字,感到抱歉。