func moveNode(xn, parent *xmlx.Node, parentName string) (newParent *xmlx.Node, oldPos int) { oldPos = -1 if root := srcDoc.Root.Children[0]; parent == nil { if parent = subNode(root, parentName); parent == nil { parent = xmlx.NewNode(xn.Type) parent.Name.Local = parentName parent.Parent = root root.Children = append(root.Children, parent) } } if xn.Parent != parent { newParent = parent if xn.Parent != nil { for i, sn := range xn.Parent.Children { if sn == xn { oldPos = i break } } if oldPos >= 0 { xn.Parent.Children[oldPos] = nil } } xn.Parent = parent parent.Children = append(parent.Children, xn) } return }