在go中解组xml时省略空数组元素

时间:2017-03-17 12:11:53

标签: arrays xml go unmarshalling

我尝试解组一个我想要省略空元素的xml数组。

我希望以下代码打印2,因为第二个bar元素为空。而是打印3。

package main

import (
    "fmt"
    "encoding/xml"
    "bytes"
)

type foo struct {
    Bars []string `xml:"bar,omitempty"`
}

func main() {
    xmlStr := `
        <foo>
            <bar>1</bar>
            <bar></bar>
            <bar>2</bar>
        </foo>`

    var f foo
    xml.NewDecoder(bytes.NewBufferString(xmlStr)).Decode(&f)
    fmt.Println(len(f.Bars))
}

去游乐场链接:https://play.golang.org/p/co8QxkyKTv

1 个答案:

答案 0 :(得分:0)

除非你想进入xml.Unmarshaler黑魔法,否则我建议你去做

func compact(ss []string) []string {
    res := make([]string, 0, len(ss))
    for _, s := range ss {
        if s != "" {
            res = append(res, s)
        }
    }
    return res
}