golang中负责解析函数
func Unmarshal(data []byte,v interface{}) error
只能对struct,slice和string进行解析
golang中负责生成xml函数
func Marshal(v interface{}) ([]byte,error)marshal可以处理指针指向的值,若指针为nil,则不会写入到xml中.
我们可以在定义解析的struct结构时,将元素的类型定义为指针类型,若解析时不存在该元素,则在marshal时不会生成空的元素.
type ObjectInfo struct { // attr ObjectType string `xml:"ObjectType,attr"` ID string `xml:"ID,attr"` name string `xml:"name,attr"` CreationDate string //`xml:"CreationDate"` // struct tag is not necessary // tag Tag []TagInfo `xml:"TagCollection>Tag"` // colorValues RefSpecdata *ReflectanceSpectrumInfo `xml:"colorValues>ReflectanceSpectrum"` colorLabData *colorCIELabInfo `xml:"colorValues>colorCIELab"` colorDensityData *colorDensityInfo `xml:"colorValues>colorDensity"` //colorValues PrintDataInterface `xml:",innerxml"` // DevicecolorValues colorCMYKPlusNData *colorCMYKPlusNInfo `xml:"DevicecolorValues>colorCMYKPlusN"` colorCMYKData *colorCMYKInfo `xml:"DevicecolorValues>colorCMYK"` //DevicecolorValues PrintDataInterface `xml:",innerxml"`}上面结构是在解析CxF定义的结构,扫描后生成的数据类型是不确定的,但又是固定的几组结构,指针类型能很好的解决这个问题. 总结
以上是内存溢出为你收集整理的golang xml解析不确定是否存在的元素全部内容,希望文章能够帮你解决golang xml解析不确定是否存在的元素所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)