要处理一个 xml API 响应结果,需要捕获多个案例。对于成功案例和失败案例,我可以定义 2 个结构来处理它们。来源为:去操场。
如果响应数据有很多结果,并且它们没有相同的xml结构,我们可以在go中定义所有的struct类型。但是有没有一种简单的方法来捕获它的数据?
我发现 go 的 xmlUnmarshalXML
方法可以重写 xml 数据。打包 xml
但使用它需要先设置为特殊且唯一的结构:
func (r *PostSuccessResponse) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
return nil
}
是否可以使用startElement.Name.Local
遍历所有响应 xml 数据来检查它有什么元素,然后使用哪个 go struct 来处理?比如如果找到Fault
则使用PostFailureResponse
struct,如果找到return
则使用PostSuccessResponse
struct。