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

标签 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))
}

Go Playground 链接:https://play.golang.org/p/co8QxkyKTv

最佳答案

除非你想进入 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
}

关于arrays - 在 go 中解码 xml 时省略空数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42857246/

相关文章:

javascript - 将 if 语句与具有多个值的嵌套数组的 JavaScript 对象合并

r -//parent::* 在 XPath 中?

xml - XSL返回仅包含匹配子项的节点

android - 包中没有导出的名称 "src/github.com/rohankeskar19/android_whisper"

xml - 嵌套的 xml golang 中的解码属性

涉及 C.free() 的 C 和 Go 互操作性问题

javascript - 是否可以在 Javascript 中映射或排序数组对象

javascript - 最后一个值未存储在 Javascript 变量中

javascript - 单击 div 时从数组 jQuery 循环 img src

c - regexec在c中获取xml标签的值