go解析XML

abao2123 · · 2250 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

XML作为一种数据交换和信息传递的格式已经十分普及。而随着Web服务日益广泛的应用,
现在XML在日常的开发工作中也扮演了愈发重要的角色。这一小节, 我们将就Go语言标
准包中的XML相关处理的包进行介绍。
这个小节不会涉及XML规范相关的内容(如需了解相关知识请参考其他文献),而是介绍
如何用Go语言来编解码XML文件相关的知识。
假如你是一名运维人员,你为你所管理的所有服务器生成了如下内容的xml的配置文件:
<?xml version="1.0" encoding="utf-8"?>

    
        Shanghai_VPN
        127.0.0.1
    
    
        Beijing_VPN
        127.0.0.2
    


// GoTest project main.go
package main

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

type Recurlyservers struct {
	XMLName     xml.Name `xml:"servers"`
	Version     string   `xml:"version,attr"`
	Svs         []server `xml:"server"`
	Description string   `xml:",innerxml"`
}
type server struct {
	XMLName    xml.Name `xml:"server"`
	ServerName string   `xml:"serverName"`
	ServerIP   string   `xml:"serverIP"`
}

func main() {
	file, err := os.Open("servers.xml")
	if err != nil {
		fmt.Println("error : &v", err)
		return
	}
	data, err := ioutil.ReadAll(file)
	if err != nil {
		fmt.Println("error &v", err)
		return
	}
	v := Recurlyservers{}
	err = xml.Unmarshal(data, &v)
	if err != nil {
		fmt.Println("error &v", err)
		return
	}
	fmt.Println(v.XMLName)
	fmt.Println(v.Version)
	fmt.Println("--------------------")
	fmt.Println(v.Svs[0].ServerName)
	fmt.Println(v.Svs[0].ServerIP)
	fmt.Println("--------------------")
	fmt.Println(v.Svs[1].ServerName)
	fmt.Println(v.Svs[1].ServerIP)
}


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:abao2123

查看原文:go解析XML

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2250 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传