如何读取和解析.xml文件

问题描述:

我需要简单地读取.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'标签之间的内容。

利亚

基本思想,。基于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"]; 

} 

您有在可可解析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

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