如何读取和解析.xml文件

时间:2010-08-20 14:54:19

标签: objective-c xml xml-parsing

我只需要读取一个.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 个答案:

答案 0 :(得分: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"];

}

答案 1 :(得分:2)

在Cocoa中解析XML有两种选择:

  1. Event-Driven,其中解析器发出您的委托类响应的事件。
  2. Tree-Based,其中解析器构建了一个可以查询或修改的XML树。
  3. 事件驱动的解析对内存的密集程度较低,但由于您不构建整个XML树,因此无法使用XPath或XQuery来获取有关该文档的信息。基于树的一般使用更多内存(因为整个XML文档被转换为对象形式并存储在内存中),但它提供了更强大的机制,可以从树中获取数据。

答案 2 :(得分:0)

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

以下是一个示例项目:http://dblog.com.au/general/iphone-sdk-tutorial-building-an-advanced-rss-reader-using-touchxml-part-1/

如果你有很好的“touchxml iphone教程”,还有更多的在线