我在服務器上有一個.html文件,我需要從中解析信息。 It's沒有什麼巨大的it's只是解析HTML iPhone
<html>
<body>
<p> some text </p>
<p> some other text </p>
</body>
</html>
有沒有一種方法,我可以把所有的數組作爲單獨的對象的<p>
標籤文本,這樣我就可以在一個UITableView顯示嗎?
我在服務器上有一個.html文件,我需要從中解析信息。 It's沒有什麼巨大的it's只是解析HTML iPhone
<html>
<body>
<p> some text </p>
<p> some other text </p>
</body>
</html>
有沒有一種方法,我可以把所有的數組作爲單獨的對象的<p>
標籤文本,這樣我就可以在一個UITableView顯示嗎?
在您的tableViewCell中使用UIwebView。或者我建議使用three20 Framework的TTStyleLabel。它將顯示正確解析的html。
如何在我的tableviewcell中放置webview幫助我將文本放入數組中的p標籤中? – Magnus
請勿將UIWebView放入UITableViewCell中。 UIWebView是一個非常沉重的對象,不適合許多一次運行的實例。此外,我嚴重懷疑這甚至會起作用。因爲你在本質上是一個UIScrollView(在Web視圖中)在另一個UIScrollView(表格視圖)的單元格中,所以滾動截點會變得混亂並且不起作用。 –
對於'TTStyledLabel',+1有一個基本的xhtml解析器,並使用three20樣式表系統做一個自定義的'UIView'渲染,甚至包含鏈接。這是如何Facebook應用程序... –
你可以用的libxml解析它,這裏是一個示例我替你寫的:
#import <Foundation/Foundation.h>
#import <libxml/HTMLTree.h>
#import <libxml/HTMLparser.h>
#import <libxml/xpath.h>
@interface NSString(HTMLParser)
- (NSArray *)resultWithXPath:(NSString *)xpath;
@end
@implementation NSString(HTMLParser)
- (NSArray *)resultWithXPath:(NSString *)xpath
{
htmlDocPtr doc = htmlParseDoc((xmlChar *)[[self dataUsingEncoding:NSUTF8StringEncoding] bytes], "UTF-8");
xmlXPathContextPtr context = xmlXPathNewContext(doc);
xmlXPathObjectPtr xpathobj = xmlXPathEvalExpression(BAD_CAST [xpath UTF8String], context);
xmlNodeSetPtr nodeset = xpathobj->nodesetval;
if (xmlXPathNodeSetIsEmpty(nodeset))
return nil;
NSMutableArray *result = [[NSMutableArray alloc] initWithCapacity:nodeset->nodeNr];
for (int i=0; i<nodeset->nodeNr; i++){
xmlNodePtr node = nodeset->nodeTab[i];
[result addObject:[NSString stringWithCString:(char *)xmlNodeGetContent(node) encoding:NSUTF8StringEncoding]];
}
xmlXPathFreeObject(xpathobj);
xmlXPathFreeContext(context);
xmlFreeDoc(doc);
return [result autorelease];
}
@end
int main (int argc, const char * argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *html = @"<html>\
<body>\
<p> some text </p>\
<p> some other text </p>\
</body>\
</html>";
NSArray *result = [html resultWithXPath:@"//p"];
NSLog(@"result: %@", result);
[pool release];
return 0;
}
查找到[的NSXMLParser(http://developer.apple.com/library/mac/#documentation/可可/參考/基金/班/ NSXMLParser_Class /參考/的reference.html)。 –