| 296 | } |
| 297 | |
| 298 | func iterateNodes(t *NodeIterator) []*TNode { |
| 299 | var nodes []*TNode |
| 300 | for t.MoveNext() { |
| 301 | n := t.Current().(*TNodeNavigator) |
| 302 | if n.NodeType() == AttributeNode { |
| 303 | childNode := &TNode{ |
| 304 | Type: TextNode, |
| 305 | Data: n.Value(), |
| 306 | } |
| 307 | nodes = append(nodes, &TNode{ |
| 308 | Parent: n.curr, |
| 309 | Type: AttributeNode, |
| 310 | Data: n.LocalName(), |
| 311 | FirstChild: childNode, |
| 312 | LastChild: childNode, |
| 313 | }) |
| 314 | } else { |
| 315 | nodes = append(nodes, n.curr) |
| 316 | } |
| 317 | |
| 318 | } |
| 319 | return nodes |
| 320 | } |
| 321 | |
| 322 | func selectNode(root *TNode, expr string) *TNode { |
| 323 | list := selectNodes(root, expr) |