2017-03-17 98 views
0

我嘗試解組一個xml數組,其中我想省略空元素。在解組XML元素時忽略空數組元素

我期望以下代碼打印2,因爲第二個條元素是空的。而是打印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

+0

的'omitempty'只能如果沒有' '在你的''裏面。 – TheHippo

回答

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 
} 
+0

我正在考慮做這樣的事情,但我認爲'omitempty'應該照顧它開箱即用。 –

+0

我最終只是做了上面的事情。 –