From 2ae5988db30756a7cf256d35019dc5151806387f Mon Sep 17 00:00:00 2001 From: pzx521521 Date: Fri, 28 Oct 2022 14:28:08 +0800 Subject: [PATCH] Update xml.go here is xml.Unmarshal problem if xml have muti-root: [unmarshal-xml-array-in-golang-only-getting-the-first-element](https://stackoverflow.com/questions/27553274/unmarshal-xml-array-in-golang-only-getting-the-first-element) [so gin have same problem](https://stackoverflow.com/questions/74226570/golang-gin-binding-request-body-xml-to-slice): if gin bind muti-root-xml, it should use for util io.EOF --- binding/xml.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/binding/xml.go b/binding/xml.go index a70f4ad3..92173a62 100644 --- a/binding/xml.go +++ b/binding/xml.go @@ -26,8 +26,13 @@ func (xmlBinding) BindBody(body []byte, obj any) error { } func decodeXML(r io.Reader, obj any) error { decoder := xml.NewDecoder(r) - if err := decoder.Decode(obj); err != nil { - return err + for { + if err := decoder.Decode(obj); err != nil { + if err == io.EOF{ + break + } + return err + } } return validate(obj) }