亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Go語言中XML文件的讀寫操作

 更新時(shí)間:2023年04月03日 10:05:10   作者:C語言中文網(wǎng)  
本文主要介紹了Go語言中XML文件的讀寫操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

XML(extensible Markup Language)格式被廣泛用作一種數(shù)據(jù)交換格式,并且自成一種文件格式。與上一節(jié)介紹的 JSON 相比 XML 要復(fù)雜得多,而且手動寫起來相對乏味得多。

在 JSON 還未像現(xiàn)在這么廣泛使用時(shí),XML 的使用相當(dāng)廣泛。XML 作為一種數(shù)據(jù)交換和信息傳遞的格式,使用還是很廣泛的,現(xiàn)在很多開放平臺接口,基本都會支持 XML 格式。

Go語言內(nèi)置的 encoding/xml 包可以用在結(jié)構(gòu)體和 XML 格式之間進(jìn)行編解碼,其方式跟 encoding/json 包類似。然而與 JSON 相比 XML 的編碼和解碼在功能上更苛刻得多,這是由于 encoding/xml 包要求結(jié)構(gòu)體的字段包含格式合理的標(biāo)簽,而 JSON 格式卻不需要。

寫 XML 文件

使用 encoidng/xml 包可以很方便的將 xml 數(shù)據(jù)存儲到文件中,示例代碼如下:

package main
import (
    "encoding/xml"
    "fmt"
    "os"
)
type Website struct {
    Name   string `xml:"name,attr"`
    Url    string
    Course []string
}
func main() {
    //實(shí)例化對象
    info := Website{"腳本之家", "http://jb51.net/golang/", []string{"Go語言入門教程", "Golang入門教程"}}
    f, err := os.Create("./info.xml")
    if err != nil {
        fmt.Println("文件創(chuàng)建失敗", err.Error())
        return
    }
    defer f.Close()
    //序列化到文件中
    encoder := xml.NewEncoder(f)
    err = encoder.Encode(info)
    if err != nil {
        fmt.Println("編碼錯(cuò)誤:", err.Error())
        return
    } else {
        fmt.Println("編碼成功")
    }
}

運(yùn)行上面的代碼會在當(dāng)前目錄生成一個(gè) info.xml 文件,文件的內(nèi)容如下所示:

<Website name="腳本之家">
    <Url>http://jb51.net/golang/</Url>
    <Course>Go語言入門教程</Course>
    <Course>Golang入門教程</Course>
</Website>

讀 XML 文件

讀 XML 文件比寫 XML 文件稍微復(fù)雜,特別是在必須處理一些我們自定義字段的時(shí)候(例如日期)。但是,如果我們使用合理的打上 XML 標(biāo)簽的結(jié)構(gòu)體,就不會復(fù)雜。示例代碼如下:

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{}
    //創(chuàng)建 xml 解碼器
    decoder := xml.NewDecoder(file)
    err = decoder.Decode(&info)
    if err != nil {
        fmt.Printf("解碼失敗:%v", err)
        return
    } else {
        fmt.Println("解碼成功")
        fmt.Println(info)
    }
}

運(yùn)行結(jié)果如下:

go run main.go
解碼成功
{腳本之家 http://jb51.net/golang/ [Go語言入門教程 Golang入門教程]}

正如寫 XML 時(shí)一樣,我們無需關(guān)心對所讀取的 XML 數(shù)據(jù)進(jìn)行轉(zhuǎn)義,xml.NewDecoder.Decode() 函數(shù)會自動處理這些。

xml 包還支持更為復(fù)雜的標(biāo)簽,包括嵌套。例如標(biāo)簽名為 'xml:"Books>Author"' 產(chǎn)生的是 <Books><Author>content</Author></Books> 這樣的 XML 內(nèi)容。同時(shí)除了 'xml:", attr"' 之外,該包還支持 'xml:",chardata"' 這樣的標(biāo)簽表示將該字段當(dāng)做字符數(shù)據(jù)來寫,支持 'xml:",innerxml"' 這樣的標(biāo)簽表示按照字面量來寫該字段,以及 'xml:",comment"' 這樣的標(biāo)簽表示將該字段當(dāng)做 XML 注釋。因此,通過使用標(biāo)簽化的結(jié)構(gòu)體,我們可以充分利用好這些方便的編碼解碼函數(shù),同時(shí)合理控制如何讀寫 XML 數(shù)據(jù)。

到此這篇關(guān)于Go語言中XML文件的讀寫操作的文章就介紹到這了,更多相關(guān)Go語言XML文件讀寫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • golang中日期操作之日期格式化及日期轉(zhuǎn)換

    golang中日期操作之日期格式化及日期轉(zhuǎn)換

    在編程中,程序員會經(jīng)常使用到日期相關(guān)操作,下面這篇文章主要給大家介紹了關(guān)于golang中日期操作之日期格式化及日期轉(zhuǎn)換的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • 自定義Go?Json的序列化方法譯文

    自定義Go?Json的序列化方法譯文

    這篇文章主要為大家介紹了自定義Go?Json序列化方法譯文,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • go語言之給定英語文章統(tǒng)計(jì)單詞數(shù)量(go語言小練習(xí))

    go語言之給定英語文章統(tǒng)計(jì)單詞數(shù)量(go語言小練習(xí))

    這篇文章給大家分享go語言小練習(xí)給定英語文章統(tǒng)計(jì)單詞數(shù)量,實(shí)現(xiàn)思路大概是利用go語言的map類型,以每個(gè)單詞作為關(guān)鍵字存儲數(shù)量信息,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2020-01-01
  • Golang如何實(shí)現(xiàn)任意進(jìn)制轉(zhuǎn)換的方法示例

    Golang如何實(shí)現(xiàn)任意進(jìn)制轉(zhuǎn)換的方法示例

    進(jìn)制轉(zhuǎn)換是人們利用符號來計(jì)數(shù)的方法,進(jìn)制轉(zhuǎn)換由一組數(shù)碼符號和兩個(gè)基本因素“基數(shù)”與“位權(quán)”構(gòu)成,這篇文章主要給大家介紹了關(guān)于Golang如何實(shí)現(xiàn)10進(jìn)制轉(zhuǎn)換62進(jìn)制的方法,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí)學(xué)習(xí),下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • Go結(jié)合MQTT實(shí)現(xiàn)通信的示例代碼

    Go結(jié)合MQTT實(shí)現(xiàn)通信的示例代碼

    本文主要介紹了Go結(jié)合MQTT實(shí)現(xiàn)通信的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 一起來用GoLand開發(fā)第一個(gè)Go程序

    一起來用GoLand開發(fā)第一個(gè)Go程序

    當(dāng)您在編輯器中工作時(shí)GoLand 會分析您的代碼,尋找優(yōu)化方法,并檢測潛在和實(shí)際問題,下面這篇文章主要給大家介紹了關(guān)于用GoLand開發(fā)第一個(gè)Go程序的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • Golang實(shí)現(xiàn)HTTP代理突破IP訪問限制的步驟詳解

    Golang實(shí)現(xiàn)HTTP代理突破IP訪問限制的步驟詳解

    在當(dāng)今互聯(lián)網(wǎng)時(shí)代,網(wǎng)站和服務(wù)商為了維護(hù)安全性和保護(hù)用戶隱私,常常會對特定的IP地址進(jìn)行封鎖或限制,本文將介紹如何使用Golang實(shí)現(xiàn)HTTP代理來突破IP訪問限制,需要的朋友可以參考下
    2023-10-10
  • golang高并發(fā)系統(tǒng)限流策略漏桶和令牌桶算法源碼剖析

    golang高并發(fā)系統(tǒng)限流策略漏桶和令牌桶算法源碼剖析

    這篇文章主要介紹了golang高并發(fā)系統(tǒng)限流策略漏桶和令牌桶算法源碼剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • go語言beego框架分頁器操作及接口頻率限制示例

    go語言beego框架分頁器操作及接口頻率限制示例

    這篇文章主要為大家介紹了go語言beego框架分頁器操作使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • Golang中Append()使用實(shí)例詳解

    Golang中Append()使用實(shí)例詳解

    今天在刷leetcode的時(shí)候,第113題讓我遇到了一個(gè)Go語言中append函數(shù)的一個(gè)坑,所以復(fù)習(xí)下,這篇文章主要給大家介紹了關(guān)于Golang中Append()使用的相關(guān)資料,需要的朋友可以參考下
    2023-01-01

最新評論