diff --git a/HTMLKit/HTMLNode.m b/HTMLKit/HTMLNode.m index c630665..345444a 100644 --- a/HTMLKit/HTMLNode.m +++ b/HTMLKit/HTMLNode.m @@ -442,8 +442,24 @@ #pragma mark - Selectors +- (HTMLElement *)querySelector:(NSString *)selectorString +{ + CSSSelector *selector = [CSSSelector selectorWithString:selectorString]; + return [self firstElementMatchingSelector:selector]; +} + +- (NSArray *)querySelectorAll:(NSString *)selectorString +{ + CSSSelector *selector = [CSSSelector selectorWithString:selectorString]; + return [self elementsMatchingSelector:selector]; +} + - (HTMLElement *)firstElementMatchingSelector:(CSSSelector *)selector { + if (selector == nil) { + return nil; + } + for (HTMLElement *element in [self nodeIteratorWithShowOptions:HTMLNodeFilterShowElement filter:nil]) { if ([selector acceptElement:element]) { return element; @@ -454,6 +470,10 @@ - (NSArray *)elementsMatchingSelector:(CSSSelector *)selector { + if (selector == nil) { + return @[]; + } + NSMutableArray *result = [NSMutableArray array]; for (HTMLElement *element in [self nodeIteratorWithShowOptions:HTMLNodeFilterShowElement filter:nil]) { if ([selector acceptElement:element]) {