zoukankan      html  css  js  c++  java
  • golang unmarshal

    my.xml中的内容如下:
    <?xml version="1.0" encoding="UTF-8" ?>
    <servers version="199">
    <server>
    <serverName>Shanghai_VPN</serverName>
    <serverIP>127.0.0.1</serverIP>
    </server>
    <server>
    <serverName>Beijing_VPN</serverName>
    <serverIP>127.0.0.2</serverIP>
    </server>
    </servers>
    实现代码如下:
    package main

    import (
    "encoding/xml"
    "fmt"
    "io/ioutil"
    )

    // 抽取单个server对象
    type Server struct {
    ServerName string `xml:"serverName"`
    ServerIP string `xml:"serverIP"`
    }

    /* https://golang.org/pkg/encoding/xml/#Unmarshal
    * If the XMLName field has an associated tag of the form
    "name" or "namespace-URL name", the XML element must have
    the given name (and, optionally, name space) or else Unmarshal
    returns an error.*/
    type Servers struct {
    XMLName xml.Name `xml:"servers"` // 只有变量名字叫XMLName才能解析出来
    Version int `xml:"version,attr"`
    Servers []Server `xml:"server"`
    }

    func main() {
    data, err := ioutil.ReadFile("./data_format/my.xml")
    if err != nil {
    fmt.Println(err)
    return
    }
    var servers = Servers{}
    err = xml.Unmarshal([]byte(data), &servers)
    if err != nil {
    fmt.Println(err)
    return
    }
    fmt.Println(servers.XMLName)
    fmt.Println(servers)
    }
    注意点:
    结构体中标签的名字必须取名为XMLName,否则解析不出来。这是golang文档中的解释

    一名潜心学习的服务器端初级人员
  • 相关阅读:
    Java bytesToHexString 解析
    Redis 启动警告错误解决
    Jackson
    HttpClient和HttpURLConnection的区别
    (HttpURLConnection)强制转化
    由sqlite在手机上的存储位置,引发的onCreate在哪里执行的小结
    Android数据存储五种方式总结
    Android 操作SQLite基本用法
    Android中SQLite应用详解
    android基础
  • 原文地址:https://www.cnblogs.com/zanyouxin/p/13444932.html
Copyright © 2011-2022 走看看