Skip to content

我多加了一个单元,回调解码用,供参考 #10

@Leadrive

Description

@Leadrive

从另外一个项目抄过来的。

package wxpay

import (
	"bytes"
	"encoding/json"
	"encoding/xml"
	"io"
)

// ToJSON 转化成JSON字符
func (p Params) ToJSON() string {
	mjson, _ := json.Marshal(p)
	return string(mjson)
}

// Decode XML解码
func Decode(r io.Reader) Params {
	var (
		d      *xml.Decoder
		start  *xml.StartElement
		params Params
	)
	d = xml.NewDecoder(r)
	params = make(Params)
	for {
		tok, err := d.Token()
		if err != nil {
			break
		}
		switch t := tok.(type) {
		case xml.StartElement:
			start = &t
		case xml.CharData:
			if t = bytes.TrimSpace(t); len(t) > 0 {
				params.SetString(start.Name.Local, string(t))
			}
		}
	}
	return params
}

// Encode XML编码
func Encode(params Params) io.Reader {
	var buf bytes.Buffer
	buf.WriteString(``)
	for k, v := range params {
		buf.WriteString(`<`)
		buf.WriteString(k)
		buf.WriteString(`>`)
	}
	buf.WriteString(``)
	return &buf
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions