diff --git a/SoObjects/SOGo/DOMNode+SOGo.h b/SoObjects/SOGo/DOMNode+SOGo.h index d08375cdc..a4dee9222 100644 --- a/SoObjects/SOGo/DOMNode+SOGo.h +++ b/SoObjects/SOGo/DOMNode+SOGo.h @@ -25,16 +25,16 @@ #import -@interface NGDOMNodeWithChildren (SOGoDOMExtensions) +@interface NGDOMNodeWithChildren (SOGoDOMExtensions) < DOMNode > -- (id ) childNodesWithTag: (NSString *) tagName; -- (id ) childNodesWithTag: (NSString *) tagName - inNamespace: (NSString *) namespace; - -- (id) firstNodeWithTag: (NSString *) tagName; -- (id) firstNodeWithTag: (NSString *) tagName +- (id ) childElementsWithTag: (NSString *) tagName; +- (id ) childElementsWithTag: (NSString *) tagName inNamespace: (NSString *) namespace; +- (id ) firstElementWithTag: (NSString *) tagName; +- (id ) firstElementWithTag: (NSString *) tagName + inNamespace: (NSString *) namespace; + @end #endif /* S_GO_SOOBJECTS_SOGO_DOMNODE_SOGO_H */ diff --git a/SoObjects/SOGo/DOMNode+SOGo.m b/SoObjects/SOGo/DOMNode+SOGo.m index 27a33b63e..f959a3945 100644 --- a/SoObjects/SOGo/DOMNode+SOGo.m +++ b/SoObjects/SOGo/DOMNode+SOGo.m @@ -29,40 +29,41 @@ @implementation NGDOMNodeWithChildren (SOGo) -- (id ) childNodesWithTag: (NSString *) tagName - inNamespace: (NSString *) namespace +- (id ) childElementsWithTag: (NSString *) tagName + inNamespace: (NSString *) namespace { id nodes; - NSMutableArray *childNodesWithTag; - id currentNode; + NSMutableArray *childElementsWithTag; + id currentElement; unsigned int count, max; - childNodesWithTag = [NSMutableArray array]; + childElementsWithTag = [NSMutableArray array]; nodes = [self childNodes]; max = [nodes length]; for (count = 0; count < max; count++) { - currentNode = [nodes objectAtIndex: count]; - if ([[currentNode nodeName] isEqualToString: tagName] + currentElement = [nodes objectAtIndex: count]; + if ([currentElement nodeType] == DOM_ELEMENT_NODE + && [[currentElement tagName] isEqualToString: tagName] && (!namespace - || [[currentNode nodeName] isEqualToString: namespace])) - [childNodesWithTag addObject: currentNode]; + || [[currentElement namespaceURI] isEqualToString: namespace])) + [childElementsWithTag addObject: currentElement]; } - return childNodesWithTag; + return childElementsWithTag; } -- (id ) childNodesWithTag: (NSString *) tagName +- (id ) childElementsWithTag: (NSString *) tagName { - return [self childNodesWithTag: tagName inNamespace: nil]; + return [self childElementsWithTag: tagName inNamespace: nil]; } -- (id ) firstNodeWithTag: (NSString *) tagName - inNamespace: (NSString *) namespace +- (id ) firstElementWithTag: (NSString *) tagName + inNamespace: (NSString *) namespace { id nodes; - id node, currentNode; + id node, currentElement; unsigned int count, max; node = nil; @@ -71,20 +72,20 @@ max = [nodes length]; for (count = 0; !node && count < max; count++) { - currentNode = [nodes objectAtIndex: count]; - if ([[currentNode nodeName] isEqualToString: tagName] + currentElement = [nodes objectAtIndex: count]; + if ([currentElement nodeType] == DOM_ELEMENT_NODE + && [[currentElement tagName] isEqualToString: tagName] && (!namespace - || [[currentNode nodeName] isEqualToString: namespace])) - node = currentNode; + || [[currentElement namespaceURI] isEqualToString: namespace])) + node = currentElement; } return node; } -- (id) firstNodeWithTag: (NSString *) tagName +- (id ) firstElementWithTag: (NSString *) tagName { - return [self firstNodeWithTag: tagName inNamespace: nil]; + return [self firstElementWithTag: tagName inNamespace: nil]; } - @end