2011-01-06 16 views
0

.net web serverからxmlの形式で情報を取得しています。iphoneでlibxml2を使ってxmlを解析する方法

私はそれを解析するためにNSXmlパーサを使用しています。

ただし、解析に時間がかかります。

libxmll2はNSXmlパーサーよりも高速です。

しかし、私はそれを使用する方法に関する明確な情報は見つかりませんでした。

サンプルコードまたはlibxml2を使用して解析する方法に関するサンプルを投稿することができます。

ありがとうございます。

答えて

1

これを実装するにはXML解析を使用する必要があります。私はtouchXMLを使用することをお勧めします。

-(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ライブラリをインポートします。

+0

私はこのURLにそれを与える方法を渡すためにsoap actionとxml stringを使う必要があります – MaheshBabu

+0

あなたはサーバーからデータを解析するurlを生成する必要があります。 – Aditya

0

TouchXMLをご覧ください。

libxml2を使用しているため、libxml2よりも簡単に使用できます。これはplainで書かれています。

関連する問題