<?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 (其他标签同理!!!!!!)
}
}
本文介绍了一种使用Go语言解析特定格式XML文件的方法。通过定义结构体映射XML标签,并利用标准库进行解析,实现了对文件中关键信息的读取与处理。
662

被折叠的 条评论
为什么被折叠?



