中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言中XML文件的讀寫操作方法有哪些

發布時間:2023-04-03 11:29:55 來源:億速云 閱讀:88 作者:iii 欄目:開發技術

這篇文章主要介紹“Go語言中XML文件的讀寫操作方法有哪些”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Go語言中XML文件的讀寫操作方法有哪些”文章能幫助大家解決問題。

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{"億速云", "http://jb51.net/golang/", []string{"Go語言入門教程", "Golang入門教程"}}
    f, err := os.Create("./info.xml")
    if err != nil {
        fmt.Println("文件創建失敗", err.Error())
        return
    }
    defer f.Close()
    //序列化到文件中
    encoder := xml.NewEncoder(f)
    err = encoder.Encode(info)
    if err != nil {
        fmt.Println("編碼錯誤:", err.Error())
        return
    } else {
        fmt.Println("編碼成功")
    }
}

運行上面的代碼會在當前目錄生成一個 info.xml 文件,文件的內容如下所示:

<Website name="億速云">
    <Url>http://jb51.net/golang/</Url>
    <Course>Go語言入門教程</Course>
    <Course>Golang入門教程</Course>
</Website>

讀 XML 文件

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

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
解碼成功

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

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

關于“Go語言中XML文件的讀寫操作方法有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洛隆县| 徐闻县| 昌黎县| 乐山市| 曲沃县| 得荣县| 明光市| 庐江县| 邯郸市| 招远市| 沙河市| 南阳市| 康马县| 故城县| 蕲春县| 三穗县| 黄平县| 毕节市| 叙永县| 泸定县| 汝阳县| 博兴县| 崇仁县| 阿拉善盟| 泰来县| 五大连池市| 威海市| 浠水县| 北宁市| 社会| 绵竹市| 紫金县| 如皋市| 娱乐| 安仁县| 文安县| 灌云县| 四川省| 清苑县| 衡南县| 晴隆县|