从XML读取项目的iPhone选项?

时间:2010-03-19 12:51:55

标签: iphone objective-c cocoa-touch

我正在使用NSURL从Web服务器访问此数据,我想要判断的是我应该将其作为XML读取,还是应该只使用NSScanner并删除 [data] 位I需要。我在网上浏览了一下从iPhone上提取XML字段的例子,但这对我所需要的东西来说似乎有些过分。任何人都可以提出任何建议或指出我正确的方向。在一个理想的世界中,我真的只想指定 [数据] 并获得一个字符串“2046 3433 5674 3422 4456 8990 1200 5284”

<!DOCTYPE tubinerotationdata>
<turbine version="1.0">
<status version="1.0" result="200">OK</status>
<data version="1.0">
    2046 3433 5674 3422 4456 8990 1200 5284
</data>
</turbine>

非常感谢任何评论/想法。

加里

3 个答案:

答案 0 :(得分:2)

您应始终使用XML解析器解析XML。订购和其他最终会破坏您的代码的事情无法保证。使用真正的XML解析器进行解析是确保在输入更改时代码不会中断的唯一方法。

答案 1 :(得分:2)

就个人而言,我会使用NSXMLParser,以便您可以使用所有内容以防从XML文件中提取更多信息。

答案 2 :(得分:0)

对于像这样的简单数据任务,我使用RegexKitLite这是一款适用于iPhone的轻量级正则表达式库。基本实现可能如下所示(假设您的文件内容位于NSString *XMLString

NSString *regex = @"<data\\s+version=\"(\\d+\\.\\d+)\">([^<]+)<\\/data>";
NSArray *components = [XMLString arrayOfComponentsMatchingRegex:regex];
if (components.count == 3) {
  // [components objectAtIndex:0] contains the full match
  // [components objectAtIndex:1] contains the version number
  // [components objectAtIndex:2] contains the contents of the data tag
  //                              (including leading/trailing whitespace)
}