我有一个Web服务器,它返回一个XML文件。让我们说http://www.foo.bar/foo.php?wantXML=1
如何从服务器获取该文件,然后解析它以访问数据?我想我必须生成一个新线程并在后台完成整个操作以阻止UI?我必须看哪些课程?
答案 0 :(得分:1)
您可以尝试:
Id选择xpath - 即使在那些情况下,你也不能反对xpath。我不确定这些库,但我知道libXML是用C语言编写的,并且支持在iphone上。
对于字符串操作,您可以使用NS *系列方法。(substringFromIndex,substringToIndex等) 不要忘记:http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSXMLParser_Class/Reference/Reference.html
Big Nerd Ranch,'在Cocoa中解析XML':http://weblog.bignerdranch.com/?p=48
答案 1 :(得分:1)
我使用了两种方法:NSXMLParser用于简单文件和小文件,libxml用于大文件。但是像TouchXML这样的库也可以简化这个过程。
基本上,如果你有一个小数据集,在内存中DOM处理可以正常工作。但是在像iPhone这样的设备中,你最好使用基于SAX的解析器,比如libxml2。
当您需要加载数据时:
[self performSelectorInBackground:@selector(LoadYourData) withObject:nil];
不会阻止主UI线程。
对于libxml2,您需要实现C回调来处理来自NSURLConnection的数据块。
答案 2 :(得分:1)
要通过http下载XML或其他内容,我建议您使用ASIHTTPRequest
请随意查看我创建的方便类,以解析简单的XML文档,就像从Nike +中获取的那样。 Link
基本上用法如下
NameValueParser *parser = [NameValueParser parser];
[parser addFieldName:@"screenName"]; // Name
[parser addFieldName:@"rank"]; // Position
[parser addFieldName:@"progress"]; // Distance
[parser parseData:data];
NSLog(@"%@", [parser list]); // Lets see what we got
答案 3 :(得分:1)
SeismicXML sample正是您所寻找的。 p>