本文整理汇总了Golang中github.com/go-forks/xmlx.Node类的典型用法代码示例。如果您正苦于以下问题:Golang Node类的具体用法?Golang Node怎么用?Golang Node使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Node类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: moveNode
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
}
示例2: ensureChild
func ensureChild(xn *xmlx.Node, name string) (sn *xmlx.Node) {
if sn = subNode(xn, name); sn == nil {
sn = xmlx.NewNode(xn.Type)
sn.Name.Local = name
xn.AddChild(sn)
}
return
}
示例3: ensureSiblings
func ensureSiblings(xn *xmlx.Node, namesVals map[string]string) {
var sn *xmlx.Node
for n, v := range namesVals {
if sn = subNode(xn.Parent, n); sn == nil {
sn = xmlx.NewNode(xn.Type)
sn.Name.Local = n
xn.Parent.AddChild(sn)
}
sn.Value = v
}
}
示例4: replaceNode
func replaceNode(xn, nn *xmlx.Node) {
pos := -1
for i, sn := range xn.Parent.Children {
if sn == xn {
pos = i
break
}
}
if pos >= 0 {
xn.Parent.Children[pos] = nn
nn.Parent = xn.Parent
xn.Parent = nil
}
}
示例5: xu64
func xu64(xn *xmlx.Node, name string) (v uint64) {
if v = xn.U64(xmlns, name); v == 0 {
if v = xn.U64("", name); v == 0 {
v = xn.U64("*", name)
}
}
return
}
示例6: xs
func xs(xn *xmlx.Node, name string) (v string) {
if v = xn.S(xmlns, name); len(v) == 0 {
if v = xn.S("", name); len(v) == 0 {
v = xn.S("*", name)
}
}
return
}
示例7: xf64
func xf64(xn *xmlx.Node, name string) (v float64) {
if v = xn.F64(xmlns, name); v == 0 {
if v = xn.F64("", name); v == 0 {
v = xn.F64("*", name)
}
}
return
}
示例8: attValU64
func attValU64(xn *xmlx.Node, name string) (val uint64) {
if val = xn.Au64(ns, name); val == 0 {
if val = xn.Au64("", name); val == 0 {
val = xn.Au64("*", name)
}
}
return
}
示例9: attVal
func attVal(xn *xmlx.Node, name string) (val string) {
if val = xn.As(ns, name); len(val) == 0 {
if val = xn.As("", name); len(val) == 0 {
val = xn.As("*", name)
}
}
return
}
示例10: subNodes
func subNodes(xn *xmlx.Node, name string) (sn []*xmlx.Node) {
if sn = xn.SelectNodes(ns, name); len(sn) == 0 {
if sn = xn.SelectNodes("", name); len(sn) == 0 {
sn = xn.SelectNodes("*", name)
}
}
return
}
示例11: xcn
func xcn(xn *xmlx.Node, name string) (cn *xmlx.Node) {
if cn = xn.SelectNode(xmlns, name); cn == nil {
if cn = xn.SelectNode("", name); cn == nil {
cn = xn.SelectNode("*", name)
}
}
return
}
示例12: subNode
func subNode(xn *xmlx.Node, name string) (sn *xmlx.Node) {
if sn = xn.SelectNode(ns, name); sn == nil {
if sn = xn.SelectNode("", name); sn == nil {
sn = xn.SelectNode("*", name)
}
}
return
}
示例13: setAttr
func setAttr(xn *xmlx.Node, name, value string, onlySetIfEmpty bool) {
for _, att := range xn.Attributes {
if att.Name.Local == name {
if (!onlySetIfEmpty) || (len(att.Value) == 0) {
logFmt("\t\tsetAttr %s.%s = %s\n", xn.Name.Local, name, value)
att.Value = value
}
return
}
}
logFmt("\t\taddAttr %s.%s = %s\n", xn.Name.Local, name, value)
att := &xmlx.Attr{Value: value}
att.Name.Local = name
xn.Attributes = append(xn.Attributes, att)
}
示例14: delAttr
func delAttr(xn *xmlx.Node, name string) {
if Strict {
pos := -1
for i, att := range xn.Attributes {
if att.Name.Local == name {
pos = i
break
}
}
if pos >= 0 {
logFmt("\t\tdelAttr %s.%s\n", xn.Name.Local, name)
nuAtts := append(xn.Attributes[:pos], xn.Attributes[pos+1:]...)
xn.Attributes = nuAtts
}
}
}
示例15: xcns
func xcns(xn *xmlx.Node, names ...string) (cns []*xmlx.Node) {
if len(names) == 1 {
if cns = xn.SelectNodes(xmlns, names[0]); len(cns) == 0 {
if cns = xn.SelectNodes("", names[0]); len(cns) == 0 {
cns = xn.SelectNodes("*", names[0])
}
}
} else {
var scns []*xmlx.Node
for _, n := range names {
if scns = xcns(xn, n); len(scns) > 0 {
cns = append(cns, scns...)
}
}
}
if len(cns) > 0 && cns[0].Parent == xn.Parent {
cns = cns[1:]
}
return
}