2010-08-20 137 views
2

我需要簡單地讀取.xml文件;像這樣:如何讀取和解析.xml文件

<exchanges> 
    <exchange> 
     <timestamp>2010-08-19 17:15:56</timestamp> 
     <userid>Elijah-Woods-MacBook-Pro.local</userid> 
     <clientname>elijah</clientname> 
     <botid>Jarvis</botid> 
     <input>firsthello</input> 
     <response>Hello, sir. How may I help you?</response> 
    </exchange> 
</exchanges> 

然後,解析'response'標籤之間的內容。

利亞

回答

3

基本思想,。基於GDataXML

的代碼是不完整http://code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/XMLSupport/

還看到多個解析器的這種分析

http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project

NSArray *entries = [doc nodesForXPath:@"//exchanges/exchange" error:nil]; 
for (GDataXMLElement *entry in entries) { 
    NSMutableDictionary * dict = [[[NSMutableDictionary alloc]initWithCapacity:7 ] autorelease]; 
    [dict setValue:[[[entry elementsForName:@"timestamp"] objectAtIndex:0] stringValue] forKey:@"timestamp"]; 
    [dict setValue:[[[entry elementsForName:@"userid"] objectAtIndex:0] stringValue] forKey:@"userid"]; 
    [dict setValue:[[[entry elementsForName:@"clientname"] objectAtIndex:0] stringValue] forKey:@"clientname"]; 
    [dict setValue:[[[entry elementsForName:@"botid"] objectAtIndex:0] stringValue] forKey:@"botid"]; 
    [dict setValue:[[[entry elementsForName:@"input"] objectAtIndex:0] stringValue] forKey:@"input"]; 
    [dict setValue:[[[entry elementsForName:@"response"] objectAtIndex:0] stringValue] forKey:@"response"]; 

} 
2

您有在可可解析XML兩種選擇:

  1. Event-Driven,其中解析器發出到你的委託類響應事件。
  2. Tree-Based,其中解析器構建一個可以查詢或修改的XML樹。

事件驅動分析的內存密集程度較低,但由於不構建整個XML樹,因此無法使用XPath或XQuery來獲取有關文檔的信息。基於樹的通常使用更多的內存(因爲整個XML文檔被轉換爲對象形式並存儲在內存中),但它提供了更強大的機制來從樹中獲取數據。

+0

你能舉一個快速的例子來解析這個,只是得到響應標籤之間的內容嗎?這就是我需要的。 – objectiveccoder001 2010-08-20 15:07:22

+0

這個.XML文件位於我的桌面上。 – objectiveccoder001 2010-08-20 15:21:20

0

TouchXML也是iPhone上的一個非常好的XML庫。它被證明是解析速度最快的之一。

下面是一個例子項目:http://dblog.com.au/general/iphone-sdk-tutorial-building-an-advanced-rss-reader-using-touchxml-part-1/

還有更多的網上,如果你很好「touchxml iphone教程」雖然

+0

我主要在Mac上使用它。任何類似的Mac的東西? – objectiveccoder001 2010-08-20 16:03:44

+0

TouchXML只是Cocoa的NSXML *類的替代品(NSXML *在iPhone上不存在)。 – mipadi 2010-08-20 17:36:58