如何在iPhone中使用libxml2解析xml [英] how to parse xml using libxml2 in iphone

查看:126
本文介绍了如何在iPhone中使用libxml2解析xml的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在从.net Web服务器获取xml形式的信息.

i am getting information in the form of xml from .net web server.

我正在使用NSXml解析器对其进行解析.

I am using NSXml parser to parse it.

但是解析需要时间.

我听说libxmll2比NSXml解析器快.

I hear that libxmll2 is faster than NSXml parser.

但是我没有找到有关如何使用它的明确信息.

But i did n't find clear info regarding how to use it.

任何人都可以发布有关如何使用libxml2进行解析的示例代码或示例.

can any one pls post sample code or example regarding how to parse using libxml2.

预先感谢你.

推荐答案

您需要使用XML解析来实现此功能.建议您使用touchXML.这是一个示例代码:

You need to use XML parsing to implement this.I suggest use touchXML. Here is a sample code for that:

-(void)callwebservice{
    NSString *path = @"YOUR URL";
    [self grabRSSFeed:path];
}

-(void) grabRSSFeed:(NSString *)blogAddress {
    // Initialize the blogEntries MutableArray that we declared in the header
    blogEntries = [[NSMutableArray alloc] init];    

    // Convert the supplied URL string into a usable URL object
    NSURL *url = [NSURL URLWithString: blogAddress];

    // Create a new rssParser object based on the TouchXML "CXMLDocument" class, this is the object that actually grabs and processes the RSS data
    CXMLDocument *rssParser = [[[CXMLDocument alloc] initWithContentsOfURL:url options:0 error:nil] autorelease];

    // Create a new Array object to be used with the looping of the results from the rssParser
    NSArray *resultNodes = NULL;

    // Set the resultNodes Array to contain an object for every instance of an  node in our RSS feed
    resultNodes = [rssParser nodesForXPath:@"//Node you want to parse" error:nil];

    // Loop through the resultNodes to access each items actual data
    for (CXMLElement *resultElement in resultNodes) {
        // Create a temporary MutableDictionary to store the items fields in, which will eventually end up in blogEntries
        NSMutableDictionary *blogItem = [[NSMutableDictionary alloc] init];

        // Create a counter variable as type "int"
        int counter;

        // Loop through the children of the current  node
        for(counter = 0; counter < [resultElement childCount]; counter++) {
            // Add each field to the blogItem Dictionary with the node name as key and node value as the value
            [blogItem setObject:[[resultElement childAtIndex:counter] stringValue] forKey:[[resultElement childAtIndex:counter] name]];
            NSLog(@"Data = %@",[[resultElement childAtIndex:counter] stringValue]); 
        }

        // Add the blogItem to the global blogEntries Array so that the view can access it.
        [blogEntries addObject:[blogItem copy]];

    }

    [YourTable reloadData];
}

在您的头文件中导入touchXML库.

Import touchXML library in you header file.

这篇关于如何在iPhone中使用libxml2解析xml的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆