123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- #import "TFHpple.h"
- #import "XPathQuery.h"
- @interface TFHpple ()
- {
- NSData * data;
- NSString * encoding;
- BOOL isXML;
- }
- @end
- @implementation TFHpple
- @synthesize data;
- @synthesize encoding;
- - (id) initWithData:(NSData *)theData encoding:(NSString *)theEncoding isXML:(BOOL)isDataXML
- {
- if (!(self = [super init])) {
- return nil;
- }
- data = theData;
- encoding = theEncoding;
- isXML = isDataXML;
- return self;
- }
- - (id) initWithData:(NSData *)theData isXML:(BOOL)isDataXML
- {
- return [self initWithData:theData encoding:nil isXML:isDataXML];
- }
- - (id) initWithXMLData:(NSData *)theData encoding:(NSString *)theEncoding
- {
- return [self initWithData:theData encoding:theEncoding isXML:YES];
- }
- - (id) initWithXMLData:(NSData *)theData
- {
- return [self initWithData:theData encoding:nil isXML:YES];
- }
- - (id) initWithHTMLData:(NSData *)theData encoding:(NSString *)theEncoding
- {
- return [self initWithData:theData encoding:theEncoding isXML:NO];
- }
- - (id) initWithHTMLData:(NSData *)theData
- {
- return [self initWithData:theData encoding:nil isXML:NO];
- }
- + (TFHpple *) hppleWithData:(NSData *)theData encoding:(NSString *)theEncoding isXML:(BOOL)isDataXML {
- return [[[self class] alloc] initWithData:theData encoding:theEncoding isXML:isDataXML];
- }
- + (TFHpple *) hppleWithData:(NSData *)theData isXML:(BOOL)isDataXML {
- return [[self class] hppleWithData:theData encoding:nil isXML:isDataXML];
- }
- + (TFHpple *) hppleWithHTMLData:(NSData *)theData encoding:(NSString *)theEncoding {
- return [[self class] hppleWithData:theData encoding:theEncoding isXML:NO];
- }
- + (TFHpple *) hppleWithHTMLData:(NSData *)theData {
- return [[self class] hppleWithData:theData encoding:nil isXML:NO];
- }
- + (TFHpple *) hppleWithXMLData:(NSData *)theData encoding:(NSString *)theEncoding {
- return [[self class] hppleWithData:theData encoding:theEncoding isXML:YES];
- }
- + (TFHpple *) hppleWithXMLData:(NSData *)theData {
- return [[self class] hppleWithData:theData encoding:nil isXML:YES];
- }
- #pragma mark -
- - (NSArray *) searchWithXPathQuery:(NSString *)xPathOrCSS
- {
- NSArray * detailNodes = nil;
- if (isXML) {
- detailNodes = PerformXMLXPathQueryWithEncoding(data, xPathOrCSS, encoding);
- } else {
- detailNodes = PerformHTMLXPathQueryWithEncoding(data, xPathOrCSS, encoding);
- }
- NSMutableArray * hppleElements = [NSMutableArray array];
- for (id node in detailNodes) {
- [hppleElements addObject:[TFHppleElement hppleElementWithNode:node isXML:isXML withEncoding:encoding]];
- }
- return hppleElements;
- }
- - (TFHppleElement *) peekAtSearchWithXPathQuery:(NSString *)xPathOrCSS
- {
- NSArray * elements = [self searchWithXPathQuery:xPathOrCSS];
- if ([elements count] >= 1) {
- return [elements objectAtIndex:0];
- }
- return nil;
- }
- @end
|