diff --git a/config/xml/xml.go b/config/xml/xml.go
index 0c4e4d27..66115714 100644
--- a/config/xml/xml.go
+++ b/config/xml/xml.go
@@ -193,10 +193,14 @@ func (c *ConfigContainer) DefaultStrings(key string, defaultval []string) []stri
// GetSection returns map for the given section
func (c *ConfigContainer) GetSection(section string) (map[string]string, error) {
- if v, ok := c.data[section]; ok {
- return v.(map[string]string), nil
+ if v, ok := c.data[section].(map[string]interface{}); ok {
+ mapstr := make(map[string]string)
+ for k, val := range v {
+ mapstr[k] = config.ToString(val)
+ }
+ return mapstr, nil
}
- return nil, errors.New("not exist setction")
+ return nil, fmt.Errorf("section '%s' not found", section)
}
// SaveConfigFile save the config into file
diff --git a/config/xml/xml_test.go b/config/xml/xml_test.go
index d8a09a59..346c866e 100644
--- a/config/xml/xml_test.go
+++ b/config/xml/xml_test.go
@@ -37,6 +37,10 @@ func TestXML(t *testing.T) {
true
${GOPATH}
${GOPATH||/home/go}
+
+1
+MySection
+
`
keyValue = map[string]interface{}{
@@ -65,11 +69,22 @@ func TestXML(t *testing.T) {
}
f.Close()
defer os.Remove("testxml.conf")
+
xmlconf, err := config.NewConfig("xml", "testxml.conf")
if err != nil {
t.Fatal(err)
}
+ var xmlsection map[string]string
+ xmlsection, err = xmlconf.GetSection("mysection")
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if len(xmlsection) == 0 {
+ t.Error("section should not be empty")
+ }
+
for k, v := range keyValue {
var (