From 4a541f77a577e69b038edd5a923640d83b4ebff3 Mon Sep 17 00:00:00 2001 From: Bob Uhl Date: Wed, 29 Jan 2014 14:27:00 -0700 Subject: [PATCH] Rolled back mistaken bugfix --- node.go | 14 ++++++++------ xmlx_test.go | 16 +++++----------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/node.go b/node.go index 2a2193e..5972d05 100644 --- a/node.go +++ b/node.go @@ -396,13 +396,15 @@ func (this *Node) SelectNodesRecursive(namespace, name string) []*Node { } func rec_SelectNodes(cn *Node, namespace, name string, list *[]*Node, recurse bool) { + if (namespace == "*" || cn.Name.Space == namespace) && (name == "*" || cn.Name.Local == name) { + *list = append(*list, cn) + if !recurse { + return + } + } + for _, v := range cn.Children { - if (namespace == "*" || v.Name.Space == namespace) && (name == "*" || v.Name.Local == name) { - *list = append(*list, v) - } - if recurse { - rec_SelectNodes(v, namespace, name, list, recurse) - } + rec_SelectNodes(v, namespace, name, list, recurse) } } diff --git a/xmlx_test.go b/xmlx_test.go index cca5253..1da420b 100644 --- a/xmlx_test.go +++ b/xmlx_test.go @@ -28,7 +28,8 @@ func TestWildcard(t *testing.T) { return } - list := doc.SelectNode("", "xml").SelectNodes("ns", "*") + list := doc.SelectNodes("ns", "*") + if len(list) != 1 { t.Errorf("Wrong number of child elements. Expected 1, got %d.", len(list)) return @@ -93,24 +94,17 @@ func TestNodeSearch(t *testing.T) { return } - nodes := doc.SelectNodesRecursive("", "item") + nodes := doc.SelectNodes("", "item") if len(nodes) == 0 { t.Errorf("SelectNodes(): no nodes found.") return } ch := doc.SelectNode("", "channel") - // Test that SelectNodes doesn't accidentally do recursive + // Test that SelectNodes properly selects multiple nodes links := ch.SelectNodes("", "link") - if len(links) != 1 { - t.Errorf("SelectNodes(): Expected 1, Got %d", len(links)) - return - } - - // Test SelectNodesRecursive does indeed get all of them - links = ch.SelectNodesRecursive("", "link") if len(links) != 8 { - t.Errorf("SelectNodesRecursive(): Expected 8, Got %d", len(links)) + t.Errorf("SelectNodes(): Expected 8, Got %d", len(links)) return } }