Go语言XML文件的读写操作

9个月前 (04-27)
XML(extensible Markup Language)格式被广泛用作一种数据交换格式,并且自成一种文件格式。与上一节介绍的 JSON 相比 XML 要复杂得多,而且手动写起来相对乏味得多。

在 JSON 还未像现在这么广泛使用时,XML 的使用相当广泛。XML 作为一种数据交换和信息传递的格式,使用还是很广泛的,现在很多开放平台接口,基本都会支持 XML 格式。

Go语言内置的 encoding/xml 包可以用在结构体和 XML 格式之间进行编解码,其方式跟 encoding/json 包类似。然而与 JSON 相比 XML 的编码和解码在功能上更苛刻得多,这是由于 encoding/xml 包要求结构体的字段包含格式理的标签,而 JSON 格式却不需要。

写 XML 文件

使用 encoidng/xml 包可以很方便的将 xml 数据存储到文件中,示例代码如下:

package main

import (

    "encoding/xml"

    "fmt"

    "os"

)

type Website struct {

    Name   string `xml:"name,attr"`

    Url    string

    Course []string

}

func main() {

    //实例化对象

    info := Website{"C语言中文网", "http://c.biancheng网站站点" rel="nofollow" /> <Website name="C语言中文网">
    <Url>http://c.biancheng网站站点" rel="nofollow" />

package main

import (

    "encoding/xml"

    "fmt"

    "os"

)

type Website struct {

    Name   string `xml:"name,attr"`

    Url    string

    Course []string

}

func main() {

    //打开xml文件

    file, err := os.Open("./info.xml")

    if err != nil {

        fmt.Printf("文件打开失败:%v", err)

        return

    }

    defer file.Close()

    info := Website{}

    //创建 xml 解码器

    decoder := xml.NewDecoder(file)

    err = decoder.Decode(&info)

    if err != nil {

        fmt.Printf("解码失败:%v", err)

        return

    } else {

        fmt.Println("解码成功")

        fmt.Println(info)

    }

}

运行结果如下:

go run main.go
解码成功

{C语言中文网 http://c.biancheng网站站点" rel="nofollow" />