golang解析xml的方法
本文實(shí)例講述了golang解析xml的方法。分享給大家供大家參考,具體如下:
golang解析xml真是好用,特別是struct屬性的tag讓程序簡(jiǎn)單了許多,其他變成語言需要特殊類型的在golang里直接使用tag舒服
xml文件點(diǎn)擊此處本站下載。
完整示例代碼:
import (
"os"
"encoding/xml"
// "encoding/json"
"io/ioutil"
"fmt"
)
type Location struct {
CountryRegion []CountryRegion
}
type CountryRegion struct {
Name string `xml:",attr"`
Code string `xml:",attr"`
State []State
}
type State struct {
Name string `xml:",attr"`
Code string `xml:",attr"`
City []City
}
type City struct {
Name string `xml:",attr"`
Code string `xml:",attr"`
Region []Region
}
type Region struct {
Name string `xml:",attr"`
Code string `xml:",attr"`
}
func main() {
f, err := os.Open("LocList.xml")
if err != nil {
panic(err)
}
data, err := ioutil.ReadAll(f)
if err != nil {
panic(err)
}
// v := make(map[string]interface{})
var v Location
err = xml.Unmarshal(data, &v)
if err != nil {
panic(err)
}
// fmt.Printf("%#v\n", v)
// table
for _, countryRegion := range v.CountryRegion {
// fmt.Printf("%s,%s\n", countryRegion.Code, countryRegion.Name)
if len(countryRegion.State) == 0 {
continue
}
for _, state := range countryRegion.State {
// fmt.Printf("%s,%s,%s\n", countryRegion.Code, state.Code, state.Name)
if len(state.City) == 0 {
continue
}
for _, city := range state.City {
// fmt.Printf("%s,%s,%s,%s\n", countryRegion.Code, state.Code, city.Code, city.Name)
if len(city.Region) == 0 {
continue
}
for _, region := range city.Region {
fmt.Printf("%s,%s,%s,%s,%s\n", countryRegion.Code, state.Code, city.Code, region.Code, region.Name)
}
}
}
}
// // json
// js, err := json.Marshal(&v.CountryRegion[0])
// if err != nil {
// panic(err)
// }
// fmt.Printf("%s\n", js)
}
希望本文所述對(duì)大家Go語言程序設(shè)計(jì)有所幫助。
相關(guān)文章
GoFrame框架Scan類型轉(zhuǎn)換實(shí)例
這篇文章主要為大家介紹了GoFrame框架Scan類型轉(zhuǎn)換的實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
go實(shí)現(xiàn)redigo的簡(jiǎn)單操作
golang操作redis主要有兩個(gè)庫,go-redis和redigo,今天我們就一起來介紹一下redigo的實(shí)現(xiàn)方法,需要的朋友可以參考下2018-07-07
go語言中如何使用select的實(shí)現(xiàn)示例
本文主要介紹了go語言中如何使用select的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
Go實(shí)現(xiàn)基于RSA加密算法的接口鑒權(quán)
這篇文章主要介紹了Go實(shí)現(xiàn)基于RSA加密算法的接口鑒權(quán),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06
淺談Golang中創(chuàng)建一個(gè)簡(jiǎn)單的服務(wù)器的方法
這篇文章主要介紹了淺談Golang中創(chuàng)建一個(gè)簡(jiǎn)單的服務(wù)器的方法,golang中的net/http包對(duì)網(wǎng)絡(luò)的支持非常好,這樣會(huì)讓我們比較容易的建立起一個(gè)相對(duì)簡(jiǎn)單的服務(wù)器,有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
一文詳解Go語言fmt標(biāo)準(zhǔn)庫的常用占位符使用
這篇文章主要為大家詳細(xì)介紹了Go語言中fmt標(biāo)準(zhǔn)庫的常用占位符及其簡(jiǎn)單使用,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Go語言有一定的幫助,需要的可以參考一下2022-12-12
Golang中crypto/rand庫的使用技巧與最佳實(shí)踐
在Golang的眾多隨機(jī)數(shù)生成庫中,crypto/rand?是一個(gè)專為加密安全設(shè)計(jì)的庫,本文主要介紹了Golang中crypto/rand庫的使用技巧與最佳實(shí)踐,感興趣的可以了解一下2024-02-02

