如何读取XML"本地文件"和Cocoa中的Parsing

jbe*_*rdo 2 xml resources cocoa-touch nsxmlparser

我可以使用以下代码读取远程 XML:

-(id)loadXMLByURL:(NSString *)urlString
{
    tweets = [[NSMutableArray alloc] init];
    NSString *filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:urlString];
    NSURL *url = [NSURL URLWithString:urlString];
    parser = [[NSXMLParser alloc] initWithContentsOfURL:url];       

    parser.delegate = self;
    [parser parse];
    return self;
}
Run Code Online (Sandbox Code Playgroud)

我在这里调用上面的函数:

- (void)viewDidLoad
{
    xmlcont = [[XMLController alloc] loadXMLByURL:@"http://192.168.10.12:81/book.xml"];

    for (Tweet *t in [xmlcont tweets]) {
        NSLog(@"At date: %@ you wrote: %@",[t createdAt], [t content]);
    }

    [super viewDidLoad];
}
Run Code Online (Sandbox Code Playgroud)

实际上我想做这样的事,差别不大.我想在XCode中的Project上读取我的资源文件夹中的XML 本地文件,但是definitelly我不知道该怎么做!我对此感到疯狂!我只是可以读取XML远程文件(http://..../file.xml).

Dee*_*olu 6

假设file.xml您要在资源文件夹中找到要解析的文件夹.您可以像这样获取文件路径,

NSString * filePath = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"xml"];
Run Code Online (Sandbox Code Playgroud)

有两种方法可以用它来获得你想要的东西.

使用文件URL

NSURL * fileURL = [NSURL fileURLWithPath:filePath];
NSXMLParser * parser = [[NSXMLParser alloc] initWithContentsOfURL:fileURL];
    ....
Run Code Online (Sandbox Code Playgroud)

使用文件数据

NSData * fileData = [NSData dataWithContentsOfFile:filePath];
NSXMLParser * parser = [[NSXMLParser alloc] initWithData:fileData];
    ....
Run Code Online (Sandbox Code Playgroud)