0
我想为NSXMLParse中的空标记XML设置字符串“EMPTY”。 Exm:我的xml:在NSXMLParse中设置空标记的字符串iOS
<STATE>0</STATE>
<MEMO/>
在上面的XML中,MEMO标签是空的。我想当NSXMLParse解析为标签时,如果它为空,请在标签中获取字符串“EMPTY”。我用波纹管代码来解析xml:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
NSLog(@"Did start element");
if ([elementName isEqualToString:@"FILENAME"])
{
XML_FIELD = FILENAME_CLOUD2;
NSLog(@"found rootElement");
return;
}
else if ([elementName isEqualToString:@"MEMO"])
{
NSLog(@"found rootElement");
XML_FIELD = MEMO;
return;
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
NSLog(@"Did end element");
if ([elementName isEqualToString:@"FILENAME"])
{
NSLog(@"rootelement end");
}
[strMemoEmpty setString:@"EMPTY"];
XML_FIELD = UNIMPORTANT2;
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
//NSString *tagName = @"USER_NAME";
if (XML_FIELD == FILENAME_CLOUD2)
{
NSLog(@"Value %@",string);
[FileCompletedArray insertObject:string atIndex:0];
}
else if (XML_FIELD == MEMO)
{
NSLog(@"Value %@",string);
if (string != nil) {
[strMemoEmpty setString:@""];
[strMemoEmpty appendString: string];
NSLog(@"foundResults: %@",strMemoEmpty);
}
[MemoArray insertObject:string atIndex:0];
}
}
我用上面的代码但它没有检查MEMO标签是空的。它解析时错过了。你有什么建议吗?在此先感谢
我还没有真正使用NSXMLParser,但我的理解是,当xml标记为EMPTY时,您尝试将字符串设置为'EMPTY'。如果可能的话,你应该看看TBXML,它是iOS应用程序中速度最快,效率最高的xml解析器之一。我将它与ASIHTTPREQUEST库一起使用,但是我听说ASIHTTPREQUEST没有更多的更新 - 一个NSURLConnection的子类并使得实现异步调用更容易,这通常更适合于大量数据进行分析和分析。对不起,这个答案不完全是一个好答案,但它是一个评论:) – jsetting32
所以你说的是什么 不被NSXMLParser读入?如果可能的话,请包括您尝试解析的xml服务的开始标记和结束标记...通常应该有开始标记和结束标记...例如 ...就像 –
jsetting32
@ jsetting32:谢谢,但我不能编辑服务器响应的数据xml。我只想要如何获得字符串 。你给我看? –
NGOT