Arrays 在go中解组xml时忽略空数组元素
我尝试解组一个xml数组,其中我想省略空元素 我希望下面的代码打印2,因为第二个bar元素是空的。取而代之的是打印3Arrays 在go中解组xml时忽略空数组元素,arrays,xml,go,unmarshalling,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> &
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))
}
主程序包
进口(
“fmt”
“编码/xml”
“字节”
)
类型foo struct{
bar[]字符串`xml:“bar,省略为空”`
}
func main(){
xmlStr:=`
1.
2.
`
福娃
NewDecoder(bytes.NewBufferString(xmlStr)).Decode(&f)
fmt.Println(长度(f.bar))
}
转到操场链接:除非您想进入
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
}
我曾想过做类似的事情,但我认为
省略empty
应该开箱即用。我最终只是做了上面的事情。省略empty
只有在
中没有
时才有效。