Iphone 从xml中提取特定元素
我在iOS应用程序中实现了XML解析,但以下文件存在问题:Iphone 从xml中提取特定元素,iphone,ios,objective-c,nsxmlparser,Iphone,Ios,Objective C,Nsxmlparser,我在iOS应用程序中实现了XML解析,但以下文件存在问题: <?xml version="1.0" encoding="UTF-8"?> <AllJobs> <Mainjobs> <job1 name="simple"> <Group name="one"> <item name>"itemone"</item name> <item name&g
<?xml version="1.0" encoding="UTF-8"?>
<AllJobs>
<Mainjobs>
<job1 name="simple">
<Group name="one">
<item name>"itemone"</item name>
<item name>"itemtwo"</item name>
<item name>"itemthree"</item name>
</Group>
<Group name="two">
<item name>"itemfour"</item name>
<item name>"itemfive"</item name>
<item name>"itemsix"</item name>
</Group>
</job1>
<job2 name="medium" />
</job2>
<job3 name="hard" />
</job3>
</Mainjobs>
</AllJobs>
“项目一”
“项目二”
“项目三”
“第四项”
“项目五”
“第六项”
我正在尝试解析“itemfour、itemfive、itemsix”项目名称,并在tableview中显示它们:
<Group name="two">
<item>"itemfour"</item>
<item>"itemfive"</item>
<item>"itemsix"</item>
</Group>
“第四项”
“项目五”
“第六项”
我是这样解析的,但它正在检索每个组标记中的所有项名称:
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
if([elementName isEqualToString:@"Alljobs"]){
jobNameArray=[[NSMutableArray alloc]init];
} else if ([elementName isEqualToString:@"Mainjobs"]) {
// self.itemDict = [[NSMutableDictionary alloc] init];
object=[[parseObject alloc]init];
dict=[[NSMutableDictionary alloc] init];
} else if ([elementName isEqualToString:@"Group"]) {
if ([str isEqualToString:@"Two"]) {
currentElement=nil;
currentElement=[[NSMutableString alloc]init];
}
} else if([elementName isEqualToString:@"item"]) {
str=[attributeDict objectForKey:@"name"];
NSLog(@"the attribute string is %@",[attributeDict objectForKey:@"name"]);
}
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if(string) {
[currentElement appendString:string];
NSLog(@" the element00000000%@", currentElement);
}
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI: (NSString *)namespaceURI qualifiedName:(NSString *)qName {
if([elementName isEqualToString:@"Mainjobs"]){
NSLog(@"the array count is %i",[jobNameArray count]);
} else if([elementName isEqualToString:@"Job1"]) {
}
if([elementName isEqualToString:@"</item>"]) {
NSLog(@"element ---------%@",elementName);
[jobNameArray addObject:str];
}
}
-(void)parser:(NSXMLParser*)parser didStartElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qName属性:(NSDictionary*)attributeDict{
if([elementName IsequalString:@“Alljobs”]){
jobNameArray=[[NSMutableArray alloc]init];
}else if([elementName IsequalString:@“Mainjobs”]){
//self.itemDict=[[NSMutableDictionary alloc]init];
object=[[parseObject alloc]init];
dict=[[NSMutableDictionary alloc]init];
}else if([elementName IsequalString:@“Group”]){
if([str isEqualToString:@“Two”]){
currentElement=零;
currentElement=[[NSMutableString alloc]init];
}
}else if([elementName IsequalString:@“item”]){
str=[attributeDict objectForKey:@“name”];
NSLog(@“属性字符串为%@”,[attributeDict objectForKey:@“名称”);
}
}
-(void)解析器:(NSXMLParser*)解析器查找字符:(NSString*)字符串{
如果(字符串){
[currentElement appendString:string];
NSLog(@“元素00000000%”,currentElement);
}
}
-(void)parser:(NSXMLParser*)parser didEndElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qName{
如果([elementName IsequalString:@“Mainjobs”]){
NSLog(@“数组计数为%i,[jobNameArray计数]);
}else if([elementName IsequalString:@“Job1”]){
}
if([elementName IsequalString:@”“){
NSLog(@“元素--------------%@”,元素名称);
[jobNameArray addObject:str];
}
}
XML标记名不能有空格
涉及
的结果未定义。“itemfour”
不是有效的XML。最好使用XPath解析器,这样对您的任务更简单。从您的解析代码来看,您似乎希望标记中包含name属性。但是您的name属性没有值。xml应该是这里的一些东西