$ref = ref($ret);
if($ret && $ref eq 'ARRAY'){
my $found = 0;
+ my @target = @$ret;
undef $prev;
- foreach my $ele(@$ret){
+ foreach my $ele(@target){
my $r = ref($ele);
- if($r eq 'ARRAY'){#TODO Is this to account here allso for rest of search path?
+ if($r eq 'ARRAY'){#TODO Is this to account here also for rest of search path?
$ele = @{$ele}[0]
}
if($seekArray && exists $ele->{'@$'}){
foreach my$node(@{$ele->{'@$'}}){
if ($node->{'_'} eq $name){
- $arr[@arr] = $ele = $node;
- }elsif($node->{'_'} eq $seekPName){
- my $seek = $node -> find("$seekPName/$name");
- $ref = ref($seek);
- if($ref eq 'ARRAY'){
- @arr=();
- foreach my$nd(@{$seek}){
+ if(ref($ele) eq 'ARRAY'){
+ @arr= @$ele;
+ }
+ $arr[@arr] = $node;
+
+ }
+ elsif($node->{'_'} eq $seekPName){
+ my $seek = $node -> find("$seekPName/$name");
+ $ref = ref($seek);
+ if($ref eq 'ARRAY'){
+ @arr=();
+ foreach my$nd(@{$seek}){
my $child = $nd -> findChildrenByName($name);
$arr[@arr] = $child if $child
- }
- return \@arr if(@arr>1);
- $ele = $arr[0];
- @arr=();
- }elsif($ref eq 'CNFNode'){
+ }
+ return \@arr if(@arr>1);
+ $ele = $arr[0];
+ @arr=();
+ }elsif($seekPName && $ref eq 'CNFNode'){
$ele = $seek;
- }
+ }
+ }
+ elsif($seekPName && $node->{'@'}){
+ my $found = findChildrenByName($node,$name);
+ if($found){
+ $ele = $found;
+ $found++;
+ next
+ }
}
}
if(@arr>1){
>div>
>div>
>div>
+ <text<Shallow>text>
>parent>
));
$test -> evaluate("\$find[/parent/div/*/text]","Deeply Nested!",$find->[0]->val());
$test -> evaluate("\$find[/parent/div/*/text]","This Too!",$find->[1]->val());
-
+ my $find2 = $node->find('/parent/*/text');
+ $test -> subcase("Select all text nodes in parent.")->
+ evaluate("\$find2[/parent/*/text]",3,scalar @$find2);
+ $test -> evaluate("\$find2[/parent/*/text]",'Shallow', $find2->[2]->val());
#
$test -> nextCase();