【发布时间】:2021-06-21 23:56:15
【问题描述】:
要处理一个 xml API 响应结果,需要捕获多个 case。对于成功案例和失败案例,我可以定义 2 个结构来处理它们。来源为:go playground。
如果响应数据有很多结果,并且它们没有相同的xml结构,我们可以在go中定义所有的struct类型。但是有没有一种简单的方法来捕获它的数据?
我发现go的xmlUnmarshalXML方法可以重写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结构体。
【问题讨论】:
-
而不是使用
UnmarshalXML,你考虑过这个吗? play.golang.org/p/EQla8IYkw3n -
@mkopriva 看起来不错。谢谢!
标签: xml api go struct xmlelement