Я хочу прочитать XML и использовать его для создания логики c в программе. В настоящее время я новичок в go, я могу создать структуру из файла XML, но почему-то не знаю, как печатать значения. Позже я хочу использовать это значение в качестве переменной в программе. Пожалуйста, поделитесь советами, как это сделать.
Ниже приведен файл XML, который я использую -
<?xml version="1.0" encoding="UTF-8"?>
<rules>
<rule type="rule0">
<conditions>
<priority>1</priority>
<tgppmccmnc>52503</tgppmccmnc>
<rgid>300</rgid>
<serviceclass>null</serviceclass>
<counterstatus0>dgu</counterstatus0>
<counterstatus1>null</counterstatus1>
</conditions>
<apply>
<chargingrulename>up_lw_normal</chargingrulename>
<chargingrulebasename>up_lw_normal</chargingrulebasename>
<qosinfo>
<max_bitrate_dl>500000</max_bitrate_dl>
<max_bitrate_ul>3000000</max_bitrate_ul>
<qci>9</qci>
</qosinfo>
</apply>
</rule>
<rule type="rule1">
<conditions>
<priority>1</priority>
<tgppmccmnc>52503</tgppmccmnc>
<rgid>300</rgid>
<serviceclass>null</serviceclass>
<counterstatus0>dgu</counterstatus0>
<counterstatus1>null</counterstatus1>
</conditions>
<apply>
<chargingrulename>up_lw_normal</chargingrulename>
<chargingrulebasename>up_lw_normal</chargingrulebasename>
<qosinfo>
<max_bitrate_dl>500000</max_bitrate_dl>
<max_bitrate_ul>3000000</max_bitrate_ul>
<qci>9</qci>
</qosinfo>
</apply>
</rule>
</rules>
Я создал следующие структуры:
package main
import (
"encoding/xml"
)
// our struct which contains the complete array of all rules in the file
type Rules struct {
XMLName xml.Name `xml:"rules"`
Rules []Rule `xml:"rule"`
}
// the rule struct for all policy rules
type Rule struct {
XMLName xml.Name `xml:"rule"`
Type string `xml:"type,attr"`
Conditions Conditions `xml:"conditions"`
Apply Apply `xml:"Apply"`
// Name string `xml:"name"`
}
// a simple struct which contains all our
// conditions
type Conditions struct {
XMLName xml.Name `xml:"conditions"`
Priority uint32 `xml:"priority"`
Tgppmccmnc string `xml:"tgppmccmnc"`
Rgid string `xml:"rgid"`
Serviceclass string `xml:"serviceclass"`
Counterstatus0 string `xml:"counterstatus0"`
Counterstatus1 string `xml:"counterstatus1"`
}
//Apply struct //It is used for applying speed and rule to Gx response
type Apply struct {
XMLName xml.Name `xml:"apply"`
Chargingrulename string `xml:"chargingrulename"`
Chargingrulebasename string `xml:"chargingrulebasename"`
Qosinfo Qosinfo `xml:"qosinfo"`
}
// Apply struct for QoS speed
type Qosinfo struct {
XMLName xml.Name `xml:"qosinfo"`
Max_bitrate_dl string `xml:"max_bitrate_dl"`
Max_bitrate_ul string `xml:"max_bitrate_ul"`
Qci string `xml:"qci"`
}
Main
xmlFile, err := os.Open("PolicyRules.xml")
// if we os.Open returns an error then handle it
if err != nil {
fmt.Println(err)
}
fmt.Println("Successfully Opened the file")
// defer the closing of our xmlFile so that we can parse it later on
defer xmlFile.Close()
// read our opened xmlFile as a byte array.
byteValue, _ := ioutil.ReadAll(xmlFile)
// we initialize our array
var rules Rules
var rule Rule
var conditions Conditions
xml.Unmarshal(byteValue, &rules)
xml.Unmarshal(byteValue, &rule)
xml.Unmarshal(byteValue, &conditions)
fmt.Println(rule.Conditions.Priority)
Пожалуйста, помогите