首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSXMLParserErrorDomain错误41

NSXMLParserErrorDomain错误41
EN

Stack Overflow用户
提问于 2011-08-31 15:25:57
回答 3查看 588关注 0票数 0

我正在解析一个xml文件,它给出了一个错误

NSXMLParserErrorDomain错误41

谁能告诉我这个错误的原因是什么以及如何解决这个错误。

提前感谢。

XML文件类似于

代码语言:javascript
复制
 <GetOpenQuestionsForUserResult>
 <Questions Count="2">
 <Question id="44">
 <Question Title>test for mitesh</Question Title>
 <Question Description>please respond from mobile</Question Description>
 <Creator Name>test@abc.com</Creator Name>
 <Creation Date>08/29/2011</Creation Date>
 <Respondent Names>test@abc.com</Respondent Names>
 <Anonymous Answers>Yes</Anonymous Answers>
 <Expiry Date>08/29/2011</Expiry Date>
 </Question>

 <Question id="45">
 <Question Title>test for mitesh 2</Question Title>
 <Question Description>second question for mitesh mobile</Question Description>
 <Creator Name>test1@abc.com</Creator Name>
 <Creation Date>08/29/2011</Creation Date>
 <Respondent Names>test1@abc.com</Respondent Names>
 <Anonymous Answers>Yes</Anonymous Answers>
 <Expiry Date>08/31/2011</Expiry Date>
 </Question>
 </Questions>
 </GetOpenQuestionsForUserResult>
 </GetOpenQuestionsForUserResponse>

请告诉我如何解析此xml文件

我遵循了下面的代码进行解析

代码语言:javascript
复制
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
  namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName 
attributes:(NSDictionary *)attributeDict {


if([elementName isEqualToString:@"Question"]) 
{
    [QuesIdArray addObject: [attributeDict objectForKey:@"id"]];
}
   else if([elementName isEqualToString:@"Question Title"]) 
{

}
else if([elementName isEqualToString:@"Question Description"]) 
{

}
else if([elementName isEqualToString:@"Creator Name"]) 
{

}
else if([elementName isEqualToString:@"Creation Date"]) 
{

}
else if([elementName isEqualToString:@"Respondent Names"]) 
{

}
else if([elementName isEqualToString:@"Anonymous Answers"]) 
{

}

else if([elementName isEqualToString:@"Expiry Date"]) 
{

}

  }

   - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { 

if(!currentElementValue) 
    currentElementValue = [[NSMutableString alloc] initWithString:string];
else
    [currentElementValue appendString:string];


NSLog(@"Processing Value: %@", currentElementValue);


  }



   - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName 
  namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {

if(currentElementValue) 
    currentElementValue = [currentElementValue stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];

if([elementName isEqualToString:@"Error"]) 
{

    //appDelegate.ErrorString = [ [ NSString alloc ] initWithString: currentElementValue ] ;
}

else if([elementName isEqualToString:@"Question Title"]) 
{

    [QuesTitleArray addObject:currentElementValue];
}
else if([elementName isEqualToString:@"Question Description"]) 
{

    [QuesTextArray addObject:currentElementValue];
}
else if([elementName isEqualToString:@"Creator Name"]) 
{
    [QuesCreatorArray addObject:currentElementValue];
}
else if([elementName isEqualToString:@"Creation Date"]) 
{
    [QuesCreationDateArray addObject:currentElementValue];
}
else if([elementName isEqualToString:@"Respondent Names"]) 
{
    [ResNamesArray addObject:currentElementValue];
}
else if([elementName isEqualToString:@"Anonymous Answers"]) 
{
    [QuesAnswerArray addObject:currentElementValue];
}

else if([elementName isEqualToString:@"Expiry Date"]) 
{

    [QuesExpiryDateArray addObject:currentElementValue];
}

//[currentElementValue release];

currentElementValue = nil;
}

谁能告诉我我在这里做错了什么。它给出了一个错误: NSXMLParserErrorDomain错误41

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-31 15:30:14

来自NSXMLParser reference - 41的错误代码值为NSXMLParserAttributeHasNoValueError

问题是您的xml格式不正确,因为xml标记名称不能包含空格。例如

代码语言:javascript
复制
<Question Title>...

这里的标签名是‘which’,而'Title‘被解释为属性名,它没有值。您应该更正您的xml来解决这个问题(即删除标记名称中的空格)。

票数 1
EN

Stack Overflow用户

发布于 2011-08-31 15:32:47

尽量不要在标签名中留空格,比如说,你给了<Question Title>test for mitesh</Question Title>

搞定

代码语言:javascript
复制
<QuestionTitle>test for mitesh</QuestionTitle>

其他标记,并尝试

票数 0
EN

Stack Overflow用户

发布于 2011-08-31 15:33:28

NSXMLParserErrorDomain error 41表示属性没有值。因为没有正确命名元素,所以最终会得到一个没有值的属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7253821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档