问题描述
处理一个xml API响应结果,需要捕获多个case。对于成功案例和失败案例,我可以定义 2 个结构来处理它们。来源为:go playground。
如果响应数据有很多结果,而且它们没有相同的xml结构,我们可以在go中定义所有的struct类型。但是有没有一种简单的方法来捕捉它的数据?
我发现 go 的 xml UnmarshalXML
方法可以重写 xml 数据。 Package xml
但是使用它需要先设置为特殊且唯一的结构体:
func (r *PostSuccessResponse) UnmarshalXML(d *xml.Decoder,start xml.StartElement) error {
return nil
}
是否可以使用 startElement.Name.Local
遍历所有响应 xml 数据以检查它具有哪些元素,然后使用哪个 go 结构来处理?如如果找到Fault
则使用PostFailureResponse
结构体,如果找到return
则使用PostSuccessResponse
结构体。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)