Skip to content

Instantly share code, notes, and snippets.

@jouyouyun
Created December 14, 2013 06:59
Show Gist options
  • Save jouyouyun/7956360 to your computer and use it in GitHub Desktop.
Save jouyouyun/7956360 to your computer and use it in GitHub Desktop.
test xml
/**
* Copyright (c) 2011 ~ 2013 Deepin, Inc.
* 2011 ~ 2013 jouyouyun
*
* Author: jouyouyun <[email protected]>
* Maintainer: jouyouyun <[email protected]>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
**/
package main
import (
"encoding/xml"
"fmt"
"io/ioutil"
"os"
)
type XMLConfig struct {
Version string `xml:"Version,attr"`
filter []string `xml:"Filter>Exclude"`
listenPort int
timeout int
servthread int
Service XMLService
}
type XMLService struct {
Filter []string `xml:"Filter>Exclude"`
ListenPort int
Timeout int
Servthread int
Ip string
}
func ParseUseUnmarshal() {
var v XMLConfig
xmlFile, err := ioutil.ReadFile("simple.xml")
if err != nil {
panic(err)
}
err1 := xml.Unmarshal(xmlFile, &v)
if err1 != nil {
panic(err1)
}
fmt.Println(v)
}
func main() {
ParseUseUnmarshal()
/*return*/
xmlFile, err := os.Open("simple.xml")
if err != nil {
panic(err)
}
defer xmlFile.Close()
decoder := xml.NewDecoder(xmlFile)
for {
t, _ := decoder.Token()
if t == nil {
fmt.Println("token is nil")
break
}
switch se := t.(type) {
case xml.StartElement:
if se.Name.Local == "Autosync" {
var d XMLConfig
decoder.DecodeElement(&d, &se)
fmt.Println(d)
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<Autosync Version="1.01">
<filter>
<Exclude>(.*)\.svn$</Exclude>
<Exclude>(.*)\.gz</Exclude>
<Exclude>^info/.*</Exclude>
</filter>
<listenPort>8786</listenPort>
<timeout>60</timeout>
<servthread>20</servthread>
<Debug>/tmp/sync_debug.log</Debug>
<Warning>/tmp/sync_warning.log</Warning>
<Fatal>/tmp/sync_fatal.log</Fatal>
<Service Name="local">
<Ip>192.168.1.20</Ip>
<Project Module="TEST" User="www" Group="www" Path="/tmp/test">
<Remote Ip="192.168.1.22" Port="8080" Module="TEST"/>
<Remote Ip="192.168.1.21" Port="2277" Module="TEMP"/>
</Project>
<Project Module="kkkk" User="nobody" Group="nobody" Path="/tmp/kkkk">
<Remote Ip="192.168.1.23" Module="TEST"/>
</Project>
</Service>
<Service Name="21serv">
<Filter>
<Exclude>(.*)\.svn$</Exclude>
<Exclude>(.*)\.gz</Exclude>
<Exclude>^info/.*</Exclude>
</Filter>
<ListenPort>8788</ListenPort>
<Timeout>30</Timeout>
<Servthread>10</Servthread>
<Ip>192.168.1.21</Ip>
<Project Module="TEMP" User="nobody" Group="nobody" Path="/tmp/temp">
</Project>
</Service>
</Autosync>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment