From 9dd267c12f9bca4f6ac86be945dad08fd3f49737 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=85=89=E6=98=A5?= Date: Sun, 1 May 2022 08:46:32 +0800 Subject: [PATCH] add xml --- http.go | 2 +- xml.go | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 xml.go diff --git a/http.go b/http.go index 30ff6bf..1e89e5c 100644 --- a/http.go +++ b/http.go @@ -14,7 +14,7 @@ import ( "time" ) -const Version = "1.0.7" +const Version = "1.0.8" // Response 返回内容 type Response struct { diff --git a/xml.go b/xml.go new file mode 100644 index 0000000..3c1d272 --- /dev/null +++ b/xml.go @@ -0,0 +1,47 @@ +package gorequest + +import ( + "bytes" + "encoding/xml" + "fmt" + "io" +) + +// MarshalXML 结构体转xml +func (p Params) MarshalXML() (reader io.Reader, err error) { + buffer := bytes.NewBuffer(make([]byte, 0)) + + if _, err = io.WriteString(buffer, ""); err != nil { + return + } + + for k, v := range p { + switch { + case k == "detail": + if _, err = io.WriteString(buffer, ""); err != nil { + return + } + default: + if _, err = io.WriteString(buffer, "<"+k+">"); err != nil { + return + } + if err = xml.EscapeText(buffer, []byte(fmt.Sprintf("%v", v))); err != nil { + return + } + if _, err = io.WriteString(buffer, ""); err != nil { + return + } + } + } + + if _, err = io.WriteString(buffer, ""); err != nil { + return + } + return buffer, nil +}