本文整理匯總了Golang中github.com/ermine/bullxmpp/xmlencoder.Decoder類的典型用法代碼示例。如果您正苦於以下問題:Golang Decoder類的具體用法?Golang Decoder怎麽用?Golang Decoder使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了Decoder類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: Decode
func (elm *Delete) Decode(d *xmlencoder.Decoder, tag *xml.StartElement) error {
var err error
for _, x := range tag.Attr {
switch {
case x.Name.Space == "" && x.Name.Local == "node":
elm.Node = xmlencoder.Copystring(x.Value)
}
}
var t xml.Token
Loop:
for {
if t, err = d.Token(); err != nil {
return err
}
switch t := t.(type) {
case xml.EndElement:
break Loop
case xml.StartElement:
switch {
case t.Name.Space == NS && t.Name.Local == "redirect":
for _, x := range tag.Attr {
switch {
case x.Name.Space == "" && x.Name.Local == "url":
elm.Redirect.Url = xmlencoder.Copystring(x.Value)
}
}
}
}
}
return err
}
示例2: Decode
func (elm *Session) Decode(d *xmlencoder.Decoder, tag *xml.StartElement) error {
var err error
if err = d.Skip(); err != nil {
return err
}
return err
}
示例3: Decode
func (elm *CLASS) Decode(d *xmlencoder.Decoder, tag *xml.StartElement) error {
var err error
var t xml.Token
Loop:
for {
if t, err = d.Token(); err != nil {
return err
}
switch t := t.(type) {
case xml.EndElement:
break Loop
case xml.StartElement:
switch {
default:
if t.Name.Space == NS {
*elm.Type = CLASSType(t.Name.Local)
if err = d.Skip(); err != nil {
return err
}
}
}
}
}
return err
}
示例4: Decode
func (elm *Item) Decode(d *xmlencoder.Decoder, tag *xml.StartElement) error {
var err error
for _, x := range tag.Attr {
switch {
case x.Name.Space == "" && x.Name.Local == "action":
value := ItemAction(x.Value)
elm.Action = &value
case x.Name.Space == "" && x.Name.Local == "order":
var i uint64
i, err = strconv.ParseUint(x.Value, 10, 0)
if err == nil {
*elm.Order = uint(i)
}
case x.Name.Space == "" && x.Name.Local == "type":
value := ItemType(x.Value)
elm.Type = &value
case x.Name.Space == "" && x.Name.Local == "value":
elm.Value = xmlencoder.Copystring(x.Value)
}
}
var t xml.Token
Loop:
for {
if t, err = d.Token(); err != nil {
return err
}
switch t := t.(type) {
case xml.EndElement:
break Loop
case xml.StartElement:
switch {
case t.Name.Space == NS && t.Name.Local == "iq":
elm.Iq = true
if err = d.Skip(); err != nil {
return err
}
continue
case t.Name.Space == NS && t.Name.Local == "message":
elm.Message = true
if err = d.Skip(); err != nil {
return err
}
continue
case t.Name.Space == NS && t.Name.Local == "presence-in":
elm.PresenceIn = true
if err = d.Skip(); err != nil {
return err
}
continue
case t.Name.Space == NS && t.Name.Local == "presence-out":
elm.PresenceOut = true
if err = d.Skip(); err != nil {
return err
}
continue
}
}
}
return err
}
示例5: Decode
func (elm *Option) Decode(d *xmlencoder.Decoder, tag *xml.StartElement) error {
var err error
for _, x := range tag.Attr {
switch {
case x.Name.Space == "" && x.Name.Local == "label":
elm.Label = xmlencoder.Copystring(x.Value)
}
}
var t xml.Token
Loop:
for {
if t, err = d.Token(); err != nil {
return err
}
switch t := t.(type) {
case xml.EndElement:
break Loop
case xml.StartElement:
switch {
case t.Name.Space == NS && t.Name.Local == "value":
var s string
if s, err = d.Text(); err != nil {
return err
}
*elm.Value = s
}
}
}
return err
}
示例6: Decode
func (elm *Features) Decode(d *xmlencoder.Decoder, tag *xml.StartElement) error {
var err error
var t xml.Token
Loop:
for {
if t, err = d.Token(); err != nil {
return err
}
switch t := t.(type) {
case xml.StartElement:
if newel, ok := xmlencoder.GetExtension(t.Name); ok {
if err = newel.(xmlencoder.Extension).Decode(d, &t); err != nil {
return err
}
*elm = append(*elm, newel)
} else {
if err = d.Skip(); err != nil {
return err
}
}
case xml.EndElement:
break Loop
}
}
return err
}
示例7: Decode
func (elm *Configure) Decode(d *xmlencoder.Decoder, tag *xml.StartElement) error {
var err error
var t xml.Token
Loop:
for {
if t, err = d.Token(); err != nil {
return err
}
switch t := t.(type) {
case xml.StartElement:
if t.Name.Space == "jabber:x:data" && t.Name.Local == "x" {
newel := &xdata.X{}
if err = newel.Decode(d, &t); err != nil {
return err
}
*elm = Configure(*newel)
} else {
if err = d.Skip(); err != nil {
return err
}
}
case xml.EndElement:
break Loop
}
}
return err
}
示例8: Decode
func (elm *Action) Decode(d *xmlencoder.Decoder, tag *xml.StartElement) error {
var err error
var t xml.Token
Loop:
for {
if t, err = d.Token(); err != nil { return err }
switch t := t.(type) {
case xml.EndElement:
break Loop
case xml.StartElement:
switch {
case t.Name.Space == NS && t.Name.Local == "invite":
newel := &Invite{}
if err = newel.Decode(d, &t); err != nil { return err}
elm.Invite = append(elm.Invite, newel)
case t.Name.Space == NS && t.Name.Local == "password":
var s string
if s, err = d.Text(); err != nil { return err }
*elm.Password = s
case t.Name.Space == NS && t.Name.Local == "status":
newel := &Status{}
if err = newel.Decode(d, &t); err != nil { return err}
elm.Status = append(elm.Status, newel)
}
}
}
return err
}
示例9: Decode
func (elm *Failure) Decode(d *xmlencoder.Decoder, tag *xml.StartElement) error {
var err error
var t xml.Token
Loop:
for {
if t, err = d.Token(); err != nil {
return err
}
switch t := t.(type) {
case xml.EndElement:
break Loop
case xml.StartElement:
switch {
case t.Name.Space == NS && t.Name.Local == "text":
if err = elm.Text.Decode(d, &t); err != nil {
return err
}
default:
if t.Name.Space == NS {
*elm.Condition = FailureCondition(t.Name.Local)
if err = d.Skip(); err != nil {
return err
}
}
}
}
}
return err
}
示例10: Decode
func (elm *Iq) Decode(d *xmlencoder.Decoder, tag *xml.StartElement) error {
var err error
for _, x := range tag.Attr {
switch {
case x.Name.Space == "" && x.Name.Local == "from":
var j *jid.JID
if j, err = jid.New(x.Value); err != nil {
return err
}
elm.From = j
case x.Name.Space == "" && x.Name.Local == "to":
var j *jid.JID
if j, err = jid.New(x.Value); err != nil {
return err
}
elm.To = j
case x.Name.Space == "" && x.Name.Local == "id":
elm.Id = xmlencoder.Copystring(x.Value)
case x.Name.Space == "" && x.Name.Local == "type":
value := IqType(x.Value)
elm.Type = &value
case x.Name.Space == "http://www.w3.org/XML/1998/namespace" && x.Name.Local == "lang":
elm.Lang = &x.Value
}
}
var t xml.Token
Loop:
for {
if t, err = d.Token(); err != nil {
return err
}
switch t := t.(type) {
case xml.EndElement:
break Loop
case xml.StartElement:
switch {
default:
if newel, ok := xmlencoder.GetExtension(t.Name); ok {
if err = newel.(xmlencoder.Extension).Decode(d, &t); err != nil {
return err
}
elm.Payload = newel
} else {
if err = d.Skip(); err != nil {
return err
}
}
case t.Name.Space == "urn:ietf:params:xml:ns:xmpp-stanzas" && t.Name.Local == "error":
newel := &stanza.Error{}
if err = newel.Decode(d, &t); err != nil {
return err
}
elm.Error = newel
}
}
}
return err
}
示例11: Decode
func (elm *Item) Decode(d *xmlencoder.Decoder, tag *xml.StartElement) error {
var err error
for _, x := range tag.Attr {
switch {
case x.Name.Space == "" && x.Name.Local == "affiliation":
value := ItemAffiliation(x.Value)
elm.Affiliation = &value
case x.Name.Space == "" && x.Name.Local == "jid":
var j *jid.JID
if j, err = jid.New(x.Value); err != nil {
return err
}
elm.Jid = j
case x.Name.Space == "" && x.Name.Local == "nick":
elm.Nick = xmlencoder.Copystring(x.Value)
case x.Name.Space == "" && x.Name.Local == "role":
value := ItemRole(x.Value)
elm.Role = &value
}
}
var t xml.Token
Loop:
for {
if t, err = d.Token(); err != nil {
return err
}
switch t := t.(type) {
case xml.EndElement:
break Loop
case xml.StartElement:
switch {
case t.Name.Space == NS && t.Name.Local == "actor":
for _, x := range tag.Attr {
switch {
case x.Name.Space == "" && x.Name.Local == "jid":
var j *jid.JID
if j, err = jid.New(x.Value); err != nil {
return err
}
elm.Actor.Jid = j
}
}
case t.Name.Space == NS && t.Name.Local == "reason":
var s string
if s, err = d.Text(); err != nil {
return err
}
*elm.Reason = s
}
}
}
return err
}
示例12: Decode
func (elm *Enter) Decode(d *xmlencoder.Decoder, tag *xml.StartElement) error {
var err error
var t xml.Token
Loop:
for {
if t, err = d.Token(); err != nil {
return err
}
switch t := t.(type) {
case xml.EndElement:
break Loop
case xml.StartElement:
switch {
case t.Name.Space == NS && t.Name.Local == "history":
for _, x := range tag.Attr {
switch {
case x.Name.Space == "" && x.Name.Local == "maxchars":
var i int64
i, err = strconv.ParseInt(x.Value, 10, 0)
if err == nil {
*elm.History.Maxchars = int(i)
}
case x.Name.Space == "" && x.Name.Local == "maxstanzas":
var i int64
i, err = strconv.ParseInt(x.Value, 10, 0)
if err == nil {
*elm.History.Maxstanzas = int(i)
}
case x.Name.Space == "" && x.Name.Local == "seconds":
var i int64
i, err = strconv.ParseInt(x.Value, 10, 0)
if err == nil {
*elm.History.Seconds = int(i)
}
case x.Name.Space == "" && x.Name.Local == "since":
*elm.History.Since, err = time.Parse(time.RFC3339, x.Value)
if err != nil {
return err
}
}
}
case t.Name.Space == NS && t.Name.Local == "password":
var s string
if s, err = d.Text(); err != nil {
return err
}
*elm.Password = s
}
}
}
return err
}
示例13: Decode
func (elm *Item) Decode(d *xmlencoder.Decoder, tag *xml.StartElement) error {
var err error
for _, x := range tag.Attr {
switch {
case x.Name.Space == "" && x.Name.Local == "approved":
var b bool
b, err = strconv.ParseBool(x.Value)
if err == nil {
elm.Approved = b
}
case x.Name.Space == "" && x.Name.Local == "ask":
value := ItemAsk(x.Value)
elm.Ask = &value
case x.Name.Space == "" && x.Name.Local == "jid":
var j *jid.JID
if j, err = jid.New(x.Value); err != nil {
return err
}
elm.Jid = j
case x.Name.Space == "" && x.Name.Local == "name":
elm.Name = xmlencoder.Copystring(x.Value)
case x.Name.Space == "" && x.Name.Local == "subscription":
value := ItemSubscription(x.Value)
elm.Subscription = &value
}
}
var t xml.Token
Loop:
for {
if t, err = d.Token(); err != nil {
return err
}
switch t := t.(type) {
case xml.EndElement:
break Loop
case xml.StartElement:
switch {
case t.Name.Space == NS && t.Name.Local == "group":
var s string
if s, err = d.Text(); err != nil {
return err
}
elm.Group = append(elm.Group, s)
}
}
}
return err
}
示例14: Decode
func (elm *Last) Decode(d *xmlencoder.Decoder, tag *xml.StartElement) error {
var err error
for _, x := range tag.Attr {
switch {
case x.Name.Space == "" && x.Name.Local == "seconds":
var i uint64
i, err = strconv.ParseUint(x.Value, 10, 0)
if err == nil {
*elm.Seconds = uint(i)
}
}
}
var s string
if s, err = d.Text(); err != nil {
return err
}
*elm.Extra = s
return err
}
示例15: Decode
func (elm *Bind) Decode(d *xmlencoder.Decoder, tag *xml.StartElement) error {
var err error
var t xml.Token
Loop:
for {
if t, err = d.Token(); err != nil {
return err
}
switch t := t.(type) {
case xml.EndElement:
break Loop
case xml.StartElement:
switch {
case t.Name.Space == NS && t.Name.Local == "resource":
var s string
if s, err = d.Text(); err != nil {
return err
}
*elm.Resource = s
case t.Name.Space == NS && t.Name.Local == "jid":
var s string
if s, err = d.Text(); err != nil {
return err
}
var j *jid.JID
if j, err = jid.New(s); err != nil {
return err
}
elm.Jid = j
}
}
}
return err
}