实例1:

//main
package main import (
"encoding/xml"
"fmt"
) type person struct {
Name string
Age int
} func main() {
p := person{Name: "sary", Age: 20} if data, err := xml.MarshalIndent(p, "", " "); err != nil {
fmt.Println(err)
return
} else {
fmt.Println(string(data))
} }

  输出:

D:/Go/bin/go.exe build [D:/GOPATH/src/study.go]

Success: process exited with code 0.

D:/GOPATH/src/study.go/study.go.exe [D:/GOPATH/src/study.go]

<person>

<Name>sary</Name>

<Age>20</Age>

</person>

Success: process exited with code 0.

实例2

//main
package main

import (
	"encoding/xml"
	"fmt"
)

type person struct {
	Name string
	Age  int
}

func main() {
	p := person{Name: "sary", Age: 20}

	var data []byte
	var err error

	if data, err = xml.MarshalIndent(p, "#", " "); err != nil {
		fmt.Println(err)
		return
	}

	fmt.Println(string(data))

	p2 := new(person)
	if err = xml.Unmarshal(data, p2); err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(p2)

}

  输出:

D:/Go/bin/go.exe build [D:/GOPATH/src/study.go]

Success: process exited with code 0.

D:/GOPATH/src/study.go/study.go.exe [D:/GOPATH/src/study.go]

#<person>

# <Name>sary</Name>

# <Age>20</Age>

#</person>

&{sary 20}

Success: process exited with code 0.

实例3:(设置标签属性)

//main
package main import (
"encoding/xml"
"fmt"
) type person struct {
Name string `xml:"Name,attr"`
Age int `xml:"Age,attr"`
} func main() {
p := person{Name: "sary", Age: 20} var data []byte
var err error if data, err = xml.MarshalIndent(p, "#", " "); err != nil {
fmt.Println(err)
return
} fmt.Println(string(data)) p2 := new(person)
if err = xml.Unmarshal(data, p2); err != nil {
fmt.Println(err)
return
}
fmt.Println(p2) }

  输出:

D:/Go/bin/go.exe build [D:/GOPATH/src/study.go]

Success: process exited with code 0.

D:/GOPATH/src/study.go/study.go.exe [D:/GOPATH/src/study.go]

#<person Name="sary" Age="20"></person>

&{sary 20}

Success: process exited with code 0.

go语言学习 ---struct 对象的序列化和反序列化(xml)的更多相关文章

  1. 对象的序列化与反序列化---IO学习笔记(四)

    对象的序列化,反序列化 对象的序列化: 就是将Object转换成byte序列 对象的反序列化: 将byte序列转换成Object 序列化流.反序列化流 序列化流(ObjectOutputStream) ...

  2. (记录)Jedis存放对象和读取对象--Java序列化与反序列化

    一.理论分析 在学习Redis中的Jedis这一部分的时候,要使用到Protostuff(Protobuf的Java客户端)这一序列化工具.一开始看到序列化这些字眼的时候,感觉到一头雾水.于是,参考了 ...

  3. Java对象的序列化与反序列化

    序列化与反序列化 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程.一般将一个对象存储至一个储存媒介,例如档案或是记亿体缓冲等.在网络传输过程中,可以是字节或是 ...

  4. Java对象的序列化和反序列化[转]

    Java基础学习总结--Java对象的序列化和反序列化 一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化.把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用 ...

  5. java中对象的序列化和反序列化

    [对象的序列化和反序列化 ] 1.定义:序列化--将对象写到一个输出流中.反序列化则是从一个输入流中读取一个对象.类中的成员必须是可序列化的,而且要实现Serializable接口,这样的类的对象才能 ...

  6. 【Java IO流】对象的序列化和反序列化

    对象的序列化和反序列化 1)对象序列化,就是将Object对象转换成byte序列,反之叫对象的反序列化. 2)序列化流(ObjectOutputStream),是字节的过滤流—— writeObjec ...

  7. Java对象的序列化与反序列化-Json篇

    说到Java对象的序列化与反序列化,我们首先想到的应该是Java的Serializable接口,这玩意在两个系统之间的DTO对象里面可能会用到,用于系统之间的数据传输.或者在RPC(远程方法调用)时可 ...

  8. 利用JavaScriptSerializer类 进行Json对象的序列化和反序列化和过滤

    项目下载:JavaScriptSerializer_对JSON对象序列化与反序列化及过滤器 利用<JavascriptSerializer类> 进行Json对象的序列化和反序列化 1. 首 ...

  9. 第12讲-Java中的IO操作及对象的序列化与反序列化

    1.知识点 1.1.课程回顾 1.2.本章重点 1.2.1  io操作 1.2.2  对象的序列化与反序列化 2.具体内容 2.1.Java IO 2.1.1.什么是IO IO其实就是输入.输出 I ...

随机推荐

  1. nginx配置url重定向&反代

    一.重定向 正则表达式匹配: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 文件及目录匹配: * -f和!-f用来判断是否存在文件 ...

  2. 02-线性结构3 Reversing Linked List (25 分)

    Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elem ...

  3. Python TIPS上一道关于人民币金额小写转大写的题

    人民币金额打印 题目链接:here.我发现我写的好复杂,但万幸编码还算符合人类,看了其他答案,感觉都是天书. #!/usr/bin/env python # -*- coding: utf-8 -*- ...

  4. 「ZJOI2019」Minmax搜索

    传送门 Solution 叶子节点的变化区间是连续的,可得知非叶子节点的权值变化区间也是连续的 由此可知,\(W\)的变化值的可行域也是连续的,所以只需要看它能否变为\(W+1\)或\(W-1\) 对 ...

  5. 【2019.11.18】SDN阅读作业

    为什么需要SDN?SDN特点? 随着网络的快速发展,传统互联网出现了如传统网络配置复杂度高等诸多问题,这些问题说明网络架构需要革新,可编程网络的相关研究为 SDN 的产生提供了可参考的理论依据 SDN ...

  6. 从0开始部署GPU集群-0:基本情况

    配置信息(多台服务器) 1 硬件:CPU和GPU*可选 2 操作系统:centos7 3 驱动:nvidia显卡驱动  *可选 4 容器运行时:docker 和 nvidia container ru ...

  7. Android系统如何移植wpa_supplicant及wifi驱动

    一.WPA_SUPPLICANT简介 1. 什么是wpa_supplicant wpa_supplicant is a WPA Supplicant for Linux, BSD, Mac OS X, ...

  8. 运维笔记--linux环境提示python: command not found

    场景描述: 新部署的容器环境,终端执行python命令,提示没有该命令. 从报错异常可以看出,可能是python环境未安装. 分析思路: 检查python路径: 方式一:type -a python ...

  9. 【c++基础】C与C++接口相互调用

    前言 编译程序的时候出现错误,入口程序如果是cpp文件可以编译成功,如果是c程序则出错.一般这个问题是c与c++之间接口相互调用出现的问题. 出现的错误是undefined reference to ...

  10. Rufus软件

    Rufus软件(https://rufus.akeo.ie/)——制作启动盘必备,简易且开源.