Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone XMLParser建议_Iphone_Ios_Xml_Parsing_Nsxmlparser - Fatal编程技术网

Iphone XMLParser建议

Iphone XMLParser建议,iphone,ios,xml,parsing,nsxmlparser,Iphone,Ios,Xml,Parsing,Nsxmlparser,我不确定我做错了什么。我有一个指向XML树的URL,看起来像: <result> ... <title> ... </title> <body> ... </body> ... </result> 这是我的XMLParser.h: #import <Foundation/Foundation.h> #import "Object.h" @interface XMLParser

我不确定我做错了什么。我有一个指向XML树的URL,看起来像:

<result>
  ...
  <title>
  ...
  </title>
  <body>
  ...
  </body>
  ...
</result>
这是我的XMLParser.h:

#import <Foundation/Foundation.h>
#import "Object.h"

@interface XMLParser : NSObject <NSXMLParserDelegate> 
{

    NSMutableString *currentNodeContent;

    NSMutableArray  *arrayOfObjects;
    NSXMLParser     *parser;
    Object          *currentObject;
}

@property (readonly, retain) NSMutableArray *arrayOfObjects;

-(id) loadXMLbyURL:(NSString *)urlString;

@end
在我的主代码中,我对XML解析器进行了如下调用:

xmlParser = [[XMLParser alloc] loadXMLbyURL:@"www.websiteWithXML.com"];
但是,我的arrayOfObjects中没有放置任何内容(我知道这一点,因为当我告诉tableview拥有与我的数组一样多的行时,没有行)


请帮忙!!!提前谢谢你

不确定这是否有帮助

尝试更改:

arrayOfObjects  = [[NSMutableArray alloc] init];
致:


除此之外,您的代码似乎还不错。表没有加载任何内容并不意味着数组中没有对象。在完成解析之后和尝试加载tableview之前,使用断点查看数据

尝试在每个元素开始时重置currentNodeContent。例如:

-(void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    if([elementName isEqualToString:@"result"])
    {
         currentObject = [Object alloc];
    }
    else if ([elementName isEqualToString:@"title"] || [elementName isEqualToString:@"body"])
    {
        [currentNodeContent setString:@""];
    }
}
然后,当您收到字符时,执行追加操作:

-(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    [currentNodeContent appendString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];
}

通过这样做,您可以处理foundCharacters多次捕获给定元素中的所有字符的情况。

为什么要为数组指定readonly属性。。。?尝试非原子我遵循这个教程,它工作得很好,但当我试图调整它为我的使用。。。它不起作用!你能发布一个你试图从中提取数据的实际URL吗?
arrayOfObjects  = [[NSMutableArray alloc] init];
arrayOfObjects  = [[NSMutableArray alloc] initWithCapacity:0];
-(void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    if([elementName isEqualToString:@"result"])
    {
         currentObject = [Object alloc];
    }
    else if ([elementName isEqualToString:@"title"] || [elementName isEqualToString:@"body"])
    {
        [currentNodeContent setString:@""];
    }
}
-(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    [currentNodeContent appendString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];
}