IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Go xml文件处理 -> 正文阅读

[Java知识库]Go xml文件处理

在开发中会常遇到xml数据序列化和反序列化,这里我们介绍go语言处理xml数据。
encoding/xml 包实现了一个简单的xml 1.0解析器,可以理解xml名称空间。

读取xml

示例:

package main

import (
	"encoding/xml"
	"fmt"
)

type Note struct {
	XMLName  xml.Name `xml:"note"`
	To string `xml:"to"`
	From string `xml:"from"`
	Heading string `xml:"heading"`
	Body string `xml:"body"`
	Files FilesArr `xml:"files"`
}
type FilesArr struct {
	Flag string `xml:"flag,attr"` // 读取flag属性
	User []string `xml:"user"` // 读取user数组
}
func main()  {
	//读取xml文件到缓存中,返回[]byte
	//xmlDoc, err := ioutil.ReadFile("test.xml")
	//if err != nil {
	//	fmt.Println("xml文件读取失败!")
	//	return
	//}
	//fmt.Println(string(xmlDoc))
	xmlDoc := `<?xml version="1.0" encoding="UTF-8"?>
                <note>
                  <to>Tony</to>
                  <from>jack</from>
                  <heading>title</heading>
                  <body>love you</body>
                  <files flag="true">
					<user>zhang</user>
					<user>li</user>
                  </files>
                </note>`
	note := Note{}
	err := xml.Unmarshal([]byte(xmlDoc), &note)
	if err != nil {
		fmt.Println(err.Error())
	} else {
		fmt.Println(note)
	}
}

读取递归数据xml

package main

import (
	"encoding/xml"
	"fmt"
)
type ListItem struct {
	Name string `xml:"name"`
	List []ListItem `xml:"list"`
}

func main()  {
	//读取xml文件到缓存中,返回[]byte
	//xmlDoc, err := ioutil.ReadFile("test.xml")
	//if err != nil {
	//	fmt.Println("xml文件读取失败!")
	//	return
	//}
	//fmt.Println(string(xmlDoc))
	xmlDoc := `<?xml version="1.0" encoding="UTF-8"?>
                <list>
                  <name>zhang</name>
					<list>
						<name>li</name>
					</list>
                </list>`
	list := ListItem{}
	err := xml.Unmarshal([]byte(xmlDoc), &list)
	if err != nil {
		fmt.Println(err.Error())
	} else {
		fmt.Println(list)
	}
}



写入xml

示例:

package main

import (
	"encoding/xml"
	"fmt"
	"io/ioutil"
)

type Note struct {
	XMLName  xml.Name `xml:"note"`
	To string `xml:"to"`
	From string `xml:"from"`
	Heading string `xml:"heading"`
	Body string `xml:"body"`
	Files FilesArr `xml:"files"`
}
type FilesArr struct {
	Flag string `xml:"flag,attr"` // 读取flag属性
	User []string `xml:"user"` // 读取user数组
}
func main()  {
	user:=[]string{"zhang","li"}
	files:=FilesArr{Flag: "true",User: user}
	note:=Note{
		To: "tony",
		From: "jack",
		Heading: "title",
		Body: "love you",
		Files:files,
	}
	xmlContent,err:=xml.Marshal(note)
	if	err!=nil{
		fmt.Println(err)
	}
	fmt.Println(string(xmlContent))
	//写入demo.xml
	err=ioutil.WriteFile("demo.xml", xmlContent, 0666)
	if err!=nil{
		fmt.Println(err)
	}
}

###写入递归数据

package main

import (
	"encoding/xml"
	"fmt"
	"io/ioutil"
)

type ListItem struct {
	XMLName  xml.Name `xml:"list"`
	Name string `xml:"name"`
	List []ListItem `xml:"list"`
}

func main()  {
	list:=ListItem{Name: "li",List: nil}
	lists:=ListItem{Name: "zhang"}
	l := make([]ListItem,0)
	lists.List=append(l,list)
	xmlContent,err:=xml.Marshal(lists)
	if	err!=nil{
		fmt.Println(err)
	}
	fmt.Println(string(xmlContent))
	//写入demo.xml
	err=ioutil.WriteFile("demo.xml", xmlContent, 0666)
	if err!=nil{
		fmt.Println(err)
	}

}

links

https://studygolang.com/pkgdoc

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-16 22:07:36  更:2022-03-16 22:12:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:00:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码