如何在iphone中在3个不同数组中存储3个表解析值
我是iPhone编程新手,我正在使用NSXmlParser解析数据并将其存储在数组中,但我有3个表数据我想将其存储在3个不同的数组中,有人能告诉我如何解析数据并将其存储在3个不同的数组中吗 我的xml看起来像这样如何在iphone中在3个不同数组中存储3个表解析值,iphone,ios,objective-c,nsxmlparser,Iphone,Ios,Objective C,Nsxmlparser,我是iPhone编程新手,我正在使用NSXmlParser解析数据并将其存储在数组中,但我有3个表数据我想将其存储在3个不同的数组中,有人能告诉我如何解析数据并将其存储在3个不同的数组中吗 我的xml看起来像这样 1. YOURMAIL1@CAFE.COM 0 0 2. YOURMAIL2@CAFE.COM 0 0 3. YOURMAIL3@CAFE.COM 0 0 使用下面的代码,我能够将所有解析的数据存储在一个数组中 -(void)parser:(NSXMLParser *)parser
1.
YOURMAIL1@CAFE.COM
0
0
2.
YOURMAIL2@CAFE.COM
0
0
3.
YOURMAIL3@CAFE.COM
0
0
使用下面的代码,我能够将所有解析的数据存储在一个数组中
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *)qName
attributes: (NSDictionary *)attributeDict
{
arr_info=[NSMutableArray arrayWithObjects:@"CreatedBy",@"Email",@"SalesAmount",@"PurchasesAmount",nil];
for (i=0; i<[arr_info count]; i++)
{
if( [elementName isEqualToString:[arr_info objectAtIndex:i]])
{
if(!soapResults)
{
soapResults = [[NSMutableString alloc] init];
}
xmlResults = YES;
}
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if( xmlResults )
{
[soapResults appendString: string];
NSLog(@"soap result %@",soapResults);
[arr_detail addObject:soapResults];
NSLog(@"gg %@",arr_detail);
}
[tableView reloadData];
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
for (i=0; i<[arr_info count]; i++)
{
if( [elementName isEqualToString:[arr_info objectAtIndex:i]])
{
xmlResults = FALSE;
switch ([arr_detail count]) {
case 1:
l1.text=[arr_detail objectAtIndex:[arr_detail count]-1];
NSLog(@"%@",[arr_detail objectAtIndex:[arr_detail count]-1]);
break;
case 2:
l2.text=[arr_detail objectAtIndex:[arr_detail count]-1];
NSLog(@"%@",[arr_detail objectAtIndex:[arr_detail count]-1]);
break;
case 3:
l3.text=[arr_detail objectAtIndex:[arr_detail count]-1];
NSLog(@"%@",[arr_detail objectAtIndex:[arr_detail count]-1]);
break;
case 4:
l4.text=[arr_detail objectAtIndex:[arr_detail count]-1];
NSLog(@"%@",[arr_detail objectAtIndex:[arr_detail count]-1]);
break;
}
[tableView reloadData];
soapResults = nil;
}
}
}
-(void)parser:(NSXMLParser*)parser didStartElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qName
属性:(NSDictionary*)属性指令
{
arr_info=[NSMUTABLEARRY arrayWithObjects:@“CreatedBy”@“Email”@“SalesAmount”@“PurchasesAmount”,nil];
对于(i=0;i,您可以在didStartElement中检查属性值,并基于此为每个属性值创建不同的数组,并将其添加到字典中,如下所示:
MainDict:[
Arr1:{
1,
YOURMAIL1@CAFE.COM,
0.0000,
0.0000
},
Arr2: {
2,
YOURMAIL2@CAFE.COM,
0.0000,
0.0000
},
so on..
]
或者我可以建议第二种方法,你们可以使用字典找出不同的表。
如果要区分表1、表2等中的数据,则可以使用字典,其中每个字典再次表示字典,例如:
MainDict:[
table1:[
CreatedBy: 1,
Email: YOURMAIL1@CAFE.COM,
SalesAmount: 0.0000,
PurchasesAmount: 0.0000
],
table2:[
CreatedBy: 2,
Email: YOURMAIL2@CAFE.COM,
SalesAmount: 0.0000,
PurchasesAmount: 0.0000
],
.
.
.
]
通过这种方式,您可以区分每个字典和每个标记的值。甚至您也可以在tableview中使用此字典。您可以在didStartElement中检查属性值,并基于此为每个属性值创建不同的数组,并将其添加到字典中,如下所示:
MainDict:[
Arr1:{
1,
YOURMAIL1@CAFE.COM,
0.0000,
0.0000
},
Arr2: {
2,
YOURMAIL2@CAFE.COM,
0.0000,
0.0000
},
so on..
]
或者我可以建议第二种方法,你们可以使用字典找出不同的表。
如果要区分表1、表2等中的数据,则可以使用字典,其中每个字典再次表示字典,例如:
MainDict:[
table1:[
CreatedBy: 1,
Email: YOURMAIL1@CAFE.COM,
SalesAmount: 0.0000,
PurchasesAmount: 0.0000
],
table2:[
CreatedBy: 2,
Email: YOURMAIL2@CAFE.COM,
SalesAmount: 0.0000,
PurchasesAmount: 0.0000
],
.
.
.
]
通过这种方式,您可以区分每个字典和每个标记的值。甚至您也可以在tableview中使用此字典。您可以使用xmlReader,这将使其易于处理。以下是文件
及
这是密码
NSString *xmlString=@"<Result><Table diffgr:id=\"Table1\" msdata:rowOrder=\"0\"><CreatedBy>1</CreatedBy><Email>YOURMAIL1@CAFE.COM</Email><SalesAmount>0.0000</SalesAmount><PurchasesAmount>0.0000</PurchasesAmount></Table><Table diffgr:id=\"Table2\" msdata:rowOrder=\"0\"><CreatedBy>2</CreatedBy><Email>YOURMAIL2@CAFE.COM</Email><SalesAmount>0.0000</SalesAmount><PurchasesAmount>0.0000</PurchasesAmount></Table><Table diffgr:id=\"Table3\" msdata:rowOrder=\"0\"><CreatedBy>3</CreatedBy><Email>YOURMAIL3@CAFE.COM</Email><SalesAmount>0.0000</SalesAmount><PurchasesAmount>0.0000</PurchasesAmount></Table></Result>";
NSDictionary *dics=[[NSDictionary alloc]initWithDictionary:[XMLReader dictionaryForXMLString:xmlString error:nil]];
NSLog(@"dics is %@",dics);
NSArray *tableDicsArray=[[dics valueForKey:@"Result"] valueForKey:@"Table"];
如果正在使用arc,请不要忘记禁用arc。
---------------对每个表使用字典-------
您可以使用xmlReader,这将使其易于处理
及
这是密码
NSString *xmlString=@"<Result><Table diffgr:id=\"Table1\" msdata:rowOrder=\"0\"><CreatedBy>1</CreatedBy><Email>YOURMAIL1@CAFE.COM</Email><SalesAmount>0.0000</SalesAmount><PurchasesAmount>0.0000</PurchasesAmount></Table><Table diffgr:id=\"Table2\" msdata:rowOrder=\"0\"><CreatedBy>2</CreatedBy><Email>YOURMAIL2@CAFE.COM</Email><SalesAmount>0.0000</SalesAmount><PurchasesAmount>0.0000</PurchasesAmount></Table><Table diffgr:id=\"Table3\" msdata:rowOrder=\"0\"><CreatedBy>3</CreatedBy><Email>YOURMAIL3@CAFE.COM</Email><SalesAmount>0.0000</SalesAmount><PurchasesAmount>0.0000</PurchasesAmount></Table></Result>";
NSDictionary *dics=[[NSDictionary alloc]initWithDictionary:[XMLReader dictionaryForXMLString:xmlString error:nil]];
NSLog(@"dics is %@",dics);
NSArray *tableDicsArray=[[dics valueForKey:@"Result"] valueForKey:@"Table"];
如果正在使用arc,请不要忘记禁用arc。
---------------对每个表使用字典-------
elementName
将在didStart和didEnd上显示为Table
,跟踪它们并将其添加到字典或模型或您的数据结构中。您也可以尝试第三方XML解析库,例如,.一个好的elementName
将在didStart和didEnd上显示为Table
,跟踪它们并将其添加到字典或模型中el或您的数据结构。您也可以尝试使用第三方XML解析库,例如,.A good Hey感谢您提供replay.It's working f9。以及如何在不同数组中存储每个表详细信息在字典中您可以存储每个表详细信息。您需要三个字典来保存三个表数据我在github上添加了此功能:。感谢您在@Hayaß工作美国!这太棒了。谢谢。嘿,谢谢你给我重播。它在f9工作。我如何在不同的数组中存储每个表的详细信息在字典中你可以存储每个表的详细信息。你需要三个字典来保存三个表的数据。我在github上添加了这个:。谢谢你在@Hayaßusa工作!这太棒了。谢谢。