go编程之XML文件解析(第二种)

 <?xml version="1.0" encoding="UTF-8"?>
 <CMBSDKPGK>
     <INFO>
         <DATTYP>2</DATTYP>
         <ERRMSG></ERRMSG>
         <FUNNAM>GetTransInfoEX</FUNNAM>
         <LGNNAM>银企直连测试用户76</LGNNAM>
         <RETCOD>0</RETCOD>
     </INFO>
     <NTRBPTRSZ1>
         <COTFLG>N</COTFLG>
         <CRTAMT>0.00</CRTAMT>
         <CRTNBR>0</CRTNBR>
         <DBTAMT>0.00</DBTAMT>
         <DBTNBR>0</DBTNBR>
     </NTRBPTRSZ1>
 </CMBSDKPGK>


像上面这样的格式

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

我相信你自己看标签颜色就能看懂!!

type SConfig struct {
    XMLName xml.Name `xml:"CMBSDKPGK"` // 指定最外层的标签
    Receivers SReceivers `xml:"INFO"` // 读取INFO标签下的内容,以结构方式获取
    NTRBPTRSZ1 SNtqpayrqz `xml:"NTRBPTRSZ1"` // 读取NTRBPTRSZ1标签下的内容,以结构方式获取
}
type SReceivers struct {
    User []string `xml:"ERRMSG"`//读取INFO标签下ERRMSG的数据内容
}
type SNtqpayrqz struct {
    Cotflg []string `xml:"COTFLG"`// 读取NTRBPTRSZ1标签下COTFLG的数据内容

    Crtamt []string `xml:"CRTAMT"`// 读取NTRBPTRSZ1标签下COTFLG的数据内容
}

//开始加载xml文件解析

func main{

 file, err := os.Open("student.xml")  //这个是你的xml位置  eg:"E:/GoWorkSpace/fq.xml"
    if err != nil {
        fmt.Println("open xml file error")
        return
    }
    defer file.Close()
    data, err := ioutil.ReadAll(file)
    if err != nil {
        fmt.Println("read file stream error")
        return
    }

    v := SConfig{}  //上面定义的
    err = xml.Unmarshal(data, &v)
    if err != nil {
        fmt.Printf("error: %v", err)
        return
    }
    var sign = ""  //自己随便定义
    var cotflg = "" //自己随便定义
    var crtamt = ""//自己随便定义


    for _, ERRMSG:= range v.Receivers.User {
        sign=ERRMSG

        fmt.Println("返回参数===",sign)//打印出来就是ERRMSG标签中的 空白 
    }
    for _, COTFLG := range v.NTRBPTRSZ1.Cotflg {
            cotflg=COTFLG
            fmt.Println("cotflg", cotflg)  //打印出来就是COTFLG标签中的 N
    }

    for _, CRTAMT := range v.NTRBPTRSZ1.Crtamt {
            crtamt=CRTAMT

           fmt.Println("crtamt", crtamt)  //打印出来就是CRTAMT标签中的 0.00    (其他标签同理!!!!!!)
    }

}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值