mirror of
				https://github.com/lkmio/gb-cms.git
				synced 2025-10-31 19:02:42 +08:00 
			
		
		
		
	修复解析xml字段int类型传string值失败问题
This commit is contained in:
		| @@ -53,7 +53,7 @@ type Channel struct { | |||||||
| 	Certifiable  int    `xml:"Certifiable,omitempty"` | 	Certifiable  int    `xml:"Certifiable,omitempty"` | ||||||
| 	ErrCode      int    `xml:"ErrCode,omitempty"` | 	ErrCode      int    `xml:"ErrCode,omitempty"` | ||||||
| 	EndTime      string `xml:"EndTime,omitempty"` | 	EndTime      string `xml:"EndTime,omitempty"` | ||||||
| 	Secrecy      int    `xml:"Secrecy,omitempty"` | 	Secrecy      string `xml:"Secrecy,omitempty"` | ||||||
| 	IPAddress    string `xml:"IPAddress,omitempty"` | 	IPAddress    string `xml:"IPAddress,omitempty"` | ||||||
| 	Port         int    `xml:"Port,omitempty"` | 	Port         int    `xml:"Port,omitempty"` | ||||||
| 	Password     string `xml:"Password,omitempty"` | 	Password     string `xml:"Password,omitempty"` | ||||||
|   | |||||||
							
								
								
									
										20
									
								
								xml.go
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								xml.go
									
									
									
									
									
								
							| @@ -7,21 +7,11 @@ import ( | |||||||
| 	"golang.org/x/text/encoding/simplifiedchinese" | 	"golang.org/x/text/encoding/simplifiedchinese" | ||||||
| 	"golang.org/x/text/transform" | 	"golang.org/x/text/transform" | ||||||
| 	"io" | 	"io" | ||||||
| 	"io/ioutil" |  | ||||||
| 	"strings" |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func GbkToUtf8(s []byte) ([]byte, error) { | func GbkToUtf8(s []byte) ([]byte, error) { | ||||||
| 	reader := transform.NewReader(bytes.NewReader(s), simplifiedchinese.GBK.NewDecoder()) | 	reader := transform.NewReader(bytes.NewReader(s), simplifiedchinese.GBK.NewDecoder()) | ||||||
|  | 	return io.ReadAll(reader) | ||||||
| 	d, e := ioutil.ReadAll(reader) |  | ||||||
|  |  | ||||||
| 	if e != nil { |  | ||||||
|  |  | ||||||
| 		return nil, e |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	return d, nil |  | ||||||
| } | } | ||||||
|  |  | ||||||
| func DoDecodeXML(data []byte, message interface{}) error { | func DoDecodeXML(data []byte, message interface{}) error { | ||||||
| @@ -34,16 +24,16 @@ func DoDecodeXML(data []byte, message interface{}) error { | |||||||
| } | } | ||||||
|  |  | ||||||
| func DecodeXML(data []byte, message interface{}) error { | func DecodeXML(data []byte, message interface{}) error { | ||||||
| 	uft8Data := []byte(strings.Replace(string(data), "GB2312", "UTF-8", 1)) | 	//uft8Data := []byte(strings.Replace(string(data), "GB2312", "UTF-8", 1)) | ||||||
|  | 	uft8Data := data | ||||||
| 	err := DoDecodeXML(uft8Data, message) | 	err := DoDecodeXML(uft8Data, message) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		utf8, err := GbkToUtf8(uft8Data) | 		uft8Data, err = GbkToUtf8(uft8Data) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return err | 			return err | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		err = DoDecodeXML(uft8Data, utf8) | 		err = DoDecodeXML(uft8Data, message) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	return err | 	return err | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 yangjiechina
					yangjiechina