golang xml解析

来源:互联网 发布:淘宝宝贝降权查询 编辑:程序博客网 时间:2024/04/29 02:08
                                                                                                     

golang解析xml真是好用,特别是struct属性的tag让程序简单了许多,其他变成语言需要特殊类型的在golang里直接使用tag舒服

xml文件地址:http://qzonestyle.gtimg.cn/qzone/vas/opensns/res/doc/addresslist.zip
http://wiki.opensns.qq.com/wiki/【QQ登录】get_info

package main  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) }



本文来自:开源中国博客

感谢作者:____追梦人

查看原文:golang xml解析




查看原文:http://www.zoues.com/2016/10/20/golang-xml%e8%a7%a3%e6%9e%90/
0 0
原创粉丝点击