<?xml version="1.0" encoding="utf-8"?>
<DAS LocalPort="8250">
<DataSource>
<Device ED="UNIT1" LN="10.10.0.5:102" ET="" PL="PointsList.csv" />
</DataSource>
<DataDest LN="Host=192.168.108.22:8200;User=test;Pwd=123456" ET=""/>
</DAS>
------------------------------------------------------------------------------
package mainimport ("encoding/xml""fmt""io/ioutil""os")type Das struct {XMLName xml.Name `xml:"DAS"`LocalPort string `xml:"LocalPort,attr"`DataSource []DS `xml:"DataSource"`DataDest []DD `xml:DataDest`}type DS struct {Device []DV `xml:"Device"`}type DV struct {ED string `xml:"ED,attr"`LN string `xml:"LN,attr"`ET string `xml:"ET,attr"`PL string `xml:"PL,attr"`}type DD struct {LN string `xml:"LN,attr"`ET string `xml:"ET,attr"`}func Parser(FileName string) {file, err := os.Open(FileName)if err != nil {fmt.Println(err)
}
defer file.Close()data, err := ioutil.ReadAll(file)if err != nil {fmt.Println(err)
}
root := Das{}err = xml.Unmarshal(data, &root)if err != nil {fmt.Println(err)
}
fmt.Println(root.XMLName)
fmt.Println("LocalPort:", root.LocalPort)for _, ds := range root.DataSource {for _, dv := range ds.Device {fmt.Println("ED:", dv.ED)fmt.Println("LN:", dv.LN)fmt.Println("ET:", dv.ET)fmt.Println("PL:", dv.PL)}
}
for _, dd := range root.DataDest {fmt.Println("ET:", dd.ET)fmt.Println("LN:", dd.LN)}
}func MakeXml(XmlFile string) {f, err := os.Create(XmlFile)if err != nil {fmt.Println(err)
return}
defer f.Close()das := Das{}das.LocalPort = "8200"ds := DS{}dv := DV{}dv.ED = "Data source"dv.LN = "127.0.0.1:8100"dv.ET = "NONE"ds.Device = append(ds.Device, dv)das.DataSource = append(das.DataSource, ds)dd := DD{}dd.LN = "127.0.0.1:8200"dd.ET = "test"das.DataDest = append(das.DataDest, dd)f.Write([]byte(xml.Header))output, err := xml.MarshalIndent(das, " ", " ")f.Write(output)
return}func main() {Parser("das.xml")MakeXml("NewDas.xml")}------------------------------------------------------------------------------
{ DAS}
LocalPort: 8250
ED: UNIT1
LN: 10.10.0.5:102
ET:
PL: PointsList.csv
ET:
LN: Host=192.168.108.22:8200;User=test;Pwd=123456
------------------------------------------------------------------------------NewDas.xml<?xml version="1.0" encoding="UTF-8"?><DAS LocalPort="8200"><DataSource><Device ED="Data source" LN="127.0.0.1:8100" ET="NONE" PL=""></Device></DataSource><DataDest LN="127.0.0.1:8200" ET="test"></DataDest></DAS>