教你怎么写搜索条件:http://www.raywenderlich.com/14172/how-to-parse-html-on-ios
NSLog(@"%@",[element.attributes objectForKey:@"value"]);
//返回一个 字典
HTMLParser方法可以参考https://github.com/zootreeves/Objective-C-HMTL-Parser
TFHpple方法的使用可以看 https://github.com/topfunky/hpple
TFHpple,因为它很简单,也好用,但是它的功能不是很完完善。比如,不能获取children node。它是用XPath来定位和解析html或者xml。
xpath教程:http://www.w3school.com.cn/xpath/index.asp
具体的方法可以参考:(英文网址介绍)http://stackoverflow.com/questions/405749/parsing-html-on-the-iphone
(中文网址介绍)http://blog.csdn.net/xiaoxuan415315/article/details/7788955;还要代码下载,不过里面有错
- <span> NSData *htmlData = [NSString stringWithContentsOfFile:[NSURL URLWithString:@"http://www.baidu.com</span>"] encoding:NSUTF8StringEncoding error:nil];
会报:[NSURL getFileSystemRepresentation:maxLength:]: unrecognized selector sent to instance 0x6bcad20
- NSData *htmlData = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.baidu.com"] encoding:NSUTF8StringEncoding error:nil];
匹配还是有问题
应该这个更合适点
- <span>NSData *htmlData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.baidu.com
- </span>"]];
下面讲一下我自己实现的过程中的关键代码:
解析非utf-8页面的思路 :
- 把网络流返回的NSDate的GB2312(假设是这个)转换成TFHpple能正确解析的UTF-8编码的NSData;
- 将其中一行的<meta http-equiv="Content-Type" content="text/html; charset=gb2312">转换成UTF-8形式的
可以采用如下两种方案解决:
方法一:
- //转换成GBK编码
- NSStringEncoding gbEncoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
- NSData *htmlData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"可以是非utf-8的网页"]];
- NSString *htmlStr = [[[NSString alloc] initWithData:htmlData encoding:gbEncoding] autorelease];
方法二:
- NSData *htmlData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"可以是非utf-8的网页"]];
- CFStringRef bgCFStr = CFStringCreateWithBytes(NULL, [htmlData bytes], [htmlData length], kCFStringEncodingGB_18030_2000, false);
- NSString *gbHtmlStr = (NSString *)bgCFStr;
方法一或者二选其一,然后加下面的代码就可以实现简单解析了
- NSString *utf8HtmlStr = [htmlStr stringByReplacingOccurrencesOfString:@"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">"
- withString:@"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">"];
- NSData *htmlDataUTF8 = [utf8HtmlStr dataUsingEncoding:NSUTF8StringEncoding];
- TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:htmlDataUTF8];
- NSArray *elements = [xpathParser search:@"//option"];
- TFHppleElement *element = [elements objectAtIndex:0];
- NSString *h3Tag = [element content];
- NSLog(@"%@",h3Tag);
- mLabel.text = h3Tag;
- [xpathParser release];
- [htmlData release];
很有用的网址:http://www.raywenderlich.com/14172/how-to-parse-html-on-ios
碰到的问题:NSData --》NSString
NSData *htmlData = [htmlStr dataUsingEncoding:NSUTF8StringEncoding];
NSString --》NSData
NSString *htmlStr = [[[NSString alloc] initWithData:htmlData encoding:NSUTF8StringEncoding]autorelease];
相关推荐
这个“iOS html解析源码”可能包含了一套实现这一功能的代码示例或库。让我们深入探讨一下这个主题,了解如何在iOS上处理HTML。 首先,iOS开发主要使用Swift语言,因此我们讨论的HTML解析源码很可能用Swift编写。...
在iOS开发中,解析HTML...在iOS项目中,"demo"文件可能包含了一个简单的HTML解析示例,你可以通过查看这个示例代码来更好地理解上述知识点。记得在实际应用中,根据HTML结构和业务需求调整解析策略,以达到最佳效果。
然而,当涉及到中文字符时,我们需要关注Unicode编码,因为Unicode是现代计算机系统中用来表示各种语言字符的标准,包括中文。 对于字符串转中文,首先需要理解的是字符串的编码格式。在iOS中,字符串默认使用UTF-8...
然而,ASI框架本身并不包含HTML解析器,所以需要额外引入解析库。 在获取HTML内容后,我们需要从中提取特定字段。这通常涉及解析DOM(文档对象模型),找到相关的HTML标签和属性。例如,如果我们要提取网页标题,...
例如,如果JSON字符串包含数组或者对象中还有其他的数组或对象,SBJson会自动将它们解析为NSArray或NSDictionary。 5. **错误处理** 在实际应用中,我们应该处理可能的解析错误。虽然上面的例子中我们没有显示...
"ios-数据解析.zip"这个压缩包可能包含了一个解决方案,旨在帮助开发者轻松处理数据解析过程中可能出现的问题,增强程序的健壮性和稳定性。 在iOS应用开发中,数据解析通常涉及JSON或XML格式。JSON(JavaScript ...
`RCLabel`是一个第三方库,它允许开发者在iOS应用中轻松地显示包含HTML标签的字符串,而无需使用`WKWebView`或者`UIWebView`这样的复杂组件。这个库提供了更加轻量级的解决方案,适用于那些只需要简单HTML格式化且对...
在iOS开发中,JSON(JavaScript Object Notation)数据解析是一个重要的环节,因为它是一种轻量级的数据交换格式,广泛用于Web服务和移动应用之间的数据传输。本文将深入探讨JSON在iOS开发中的作用,以及如何利用...
iOS xml 解析 本来是喜欢用json的,可服务端的那位大神居然搞不出来 他说他是直接返回一串字符串的,是底层给疯装成xml返回的 嗨,累 网上搜了下,有说用sdk自带的NSXMLParse, 有说用google提供的GDataXML, 还有...
在iOS开发中,解析XML文件是一项常见的任务,特别是在与服务器进行数据交互时。XML(Extensible Markup Language)是一种用于标记数据的语言,具有良好的结构性和可读性,使得它成为网络数据传输的常用格式。本篇...
JSON的基本数据类型包括字符串(string)、数字(number)、布尔值(boolean)、数组(array)、对象(object)和null。在Objective-C中,这些对应为NSString、NSNumber、BOOL、NSArray、NSDictionary和NSNull。一个...
在本Demo "xmlDemo" 中,可能包含了以上提到的一种或多种XML解析方法的实现示例。通过运行这个Demo,开发者可以在后台看到XML数据被解析并打印出来的结果。这有助于理解每种方法的工作原理,并且为实际项目中的XML...
总之,iOS开发中特殊字符的处理涵盖了Foundation和CoreFoundation框架中的多种方法,包括NSString、NSData、CFString和CFData等类和函数。开发者需要根据具体场景选择合适的方法,确保数据的安全传输和正确解析。...
iOS下解析json数据,自己亲自使用过,挺好用的。 使用JSONKit的解析方法:(需导入包:#import "JSONKit/JSONKit.h") - (void)printJson{ //如果json是“单层”的,即value都是字符串、数字,可以使用...
总结一下,这个"iOS xml解析和json解析demo"将涵盖如何在iOS应用中解析XML数据,包括使用NSXMLParser和XMLParser,以及如何解析和序列化JSON数据,包括使用内置的JSONSerialization类和可能涉及的一些第三方库。...
这个压缩包"【框架】HTML解析 for iOS.rar"显然包含了关于如何在iOS平台上解析HTML内容的相关源码和可能的框架。下面我们将深入探讨HTML解析在iOS中的应用场景、常用框架以及解析过程中的关键知识点。 首先,HTML...
例如,当接收到一个包含用户信息的JSON字符串时,`SBJsonParser`能够将其解析成一个字典,然后开发者可以直接访问其中的数据。 编码方面,SBJson提供`SBJsonWriter`类,可以将Objective-C对象编码为JSON格式的字符...
3. **命名空间处理**:XML文档中常常包含多个命名空间,GDataXML提供了解析和处理命名空间的功能,使得处理带有命名空间的XML文档变得轻松。 4. **错误处理**:GDataXML在解析过程中会捕获并报告错误,这有助于调试...
本文将深入探讨iOS中如何进行JSON解析,包括基本概念、解析方法以及实际应用示例。 首先,JSON是一种轻量级的文本格式,它基于ECMAScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。JSON数据通常...
"IOS json解析"这个主题涵盖了如何在iOS应用中处理JSON数据,尤其是利用苹果内置的技术进行解析。本文将深入探讨JSON解析的基本概念、苹果提供的解析API以及如何在实际项目中运用。 首先,我们需要了解JSON的结构。...