Betrachten Sie diese zwei XML-DokumenteVermeiden XML integer Parse-Fehler, wenn das Feld leer
<a>
<b nil="true"></b>
</a>
und
<a>
<b type="integer">1</b>
</a>
Wie kann ich diese XML richtig in Gehen Sie zu einem b
struct Feld vom Typ unmarshal int
, ohne einen strconv.ParseInt: parsing "": invalid syntax
Fehler im ersten Fall erzeugen?
omitempty
scheint in diesem Fall nicht zu funktionieren.
Beispiel: http://play.golang.org/p/fbhVJ4zUbl
Sie können Ihre eigene Implementierung des XML-Decoders, der Go's XML-Decoder einpackt, machen. Das 'encoding/json' ist viel mächtiger, man könnte es als Beispiel nehmen. Wenn 'json.Unmarshal (...)' sieht, dass Ihre Typinstanz 'obj'' json.Unmarshaler' implementiert, wird es 'obj.UnmarshalJSON' aufgerufen. Ich habe keine Ahnung, warum das 'encoding/xml' nicht dasselbe tut. Möglicherweise möchten Sie Ihre Frage auf der [Go-Mailingliste] (https://groups.google.com/forum/#!forum/golang-nuts) erneut einreichen. Es scheint seltsam, dass es auch nicht funktioniert, wenn man "b" einen Zeiger macht. – Philip