本文整理匯總了Golang中github.com/beevik/etree.Element.CreateAttr方法的典型用法代碼示例。如果您正苦於以下問題:Golang Element.CreateAttr方法的具體用法?Golang Element.CreateAttr怎麽用?Golang Element.CreateAttr使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/beevik/etree.Element
的用法示例。
在下文中一共展示了Element.CreateAttr方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: getSortedNamespaces
// getSortedNamespaces sorts the namespace attributes by their prefix
func getSortedNamespaces(list map[string]string) []etree.Attr {
var keys []string
for k := range list {
keys = append(keys, k)
}
sort.Strings(keys)
elem := etree.Element{}
for _, k := range keys {
elem.CreateAttr(k, list[k])
}
return elem.Attr
}
示例2: SetBuilderElementValue
// SetBuilderElementValue if it will change to struct from map if the future's
// author is feeling a bothersome in this function.
func SetBuilderElementValue(elm *etree.Element, data map[string]interface{}, basekey string) (*etree.Element, bool) {
var child *etree.Element
key := basekey
ts, tk := spaceDecompose(elm.Tag)
_, sk := spaceDecompose(elm.Space)
if elm.Tag != "" && ts != "" && tk != "" {
key = fmt.Sprintf("%s:%s", elm.Space, basekey)
} else if sk != "" {
key = fmt.Sprintf("%s:%s", sk, basekey)
}
if values, ok := data[basekey]; ok {
switch value := values.(type) {
case nil:
default:
child = elm.CreateElement(key)
child.SetText(fmt.Sprint(value))
case int:
child = elm.CreateElement(key)
child.SetText(fmt.Sprint(value))
case string:
child = elm.CreateElement(key)
child.SetText(value)
case float64, float32:
child = elm.CreateElement(key)
child.SetText(fmt.Sprint(value))
case time.Time:
child = elm.CreateElement(key)
child.SetText(value.Format(time.RFC3339))
case bool:
_ = elm.CreateElement(fmt.Sprintf("%s:%s", key, key))
case []int:
for _, v := range value {
child = elm.CreateElement(key)
child.SetText(fmt.Sprint(v))
}
case []string:
for _, v := range value {
child = elm.CreateElement(key)
child.SetText(v)
}
case Attrs:
val, attrs := value[0], value[1]
child, _ = SetBuilderElementValue(elm, URL{basekey: val}, basekey)
switch attr := attrs.(type) {
case map[string]string:
for k, v := range attr {
child.CreateAttr(k, v)
}
// TODO: gotta remove below
case Attr:
for k, v := range attr {
child.CreateAttr(k, v)
}
}
case interface{}:
var childkey string
if sk == "" {
childkey = fmt.Sprintf("%s:%s", key, key)
} else {
childkey = fmt.Sprint(key)
}
switch value := values.(type) {
case []URL:
for _, v := range value {
child := elm.CreateElement(childkey)
for ck := range v {
SetBuilderElementValue(child, v, ck)
}
}
case URL:
child := elm.CreateElement(childkey)
for ck := range value {
SetBuilderElementValue(child, value, ck)
}
}
}
return child, true
}
return child, false
}