【Go学习笔记16】解析xml

349 阅读1分钟

前言

本来我觉得在现在JSON流行的时代,xml作为传输数据格式应该不存在了,或者说不太可能遇到了。但是,今天还是遇到了[捂脸]。

将数据编码为xml格式

直接看代码。

package main

import (
	"encoding/xml"
	"fmt"
	"os"
)


type Result struct {
	XMLName xml.Name `xml:"pay"`
	PayResult    string   `xml:"payResult"`
	ErrCode   string `xml:"errcode"`
	ErrMsg string `xml:"errmsg"`
}
func main() {
	v := Result{
		PayResult: "success",
		ErrCode: "200",
		ErrMsg: "",
	}
	encoder := xml.NewEncoder(os.Stdout)
	encoder.Encode(v)
}

将xml数据解码为对象

package main

import (
	"encoding/xml"
	"fmt"
	"os"
)


type Result struct {
	XMLName xml.Name `xml:"pay"`
	PayResult    string   `xml:"payResult"`
	ErrCode   string `xml:"errcode"`
	ErrMsg string `xml:"errmsg"`
}
func main() {
	v := Result{}

	data := `
		<pay><payresult>10</payresult><errcode>99</errcode><errmsg></errmsg></pay>
	`
	err := xml.Unmarshal([]byte(data), &v)
	if err != nil {
		fmt.Printf("error: %v", err)
		return
	}
	fmt.Printf(v.PayResult)
}