tiaguinho/gosoap

Complex XML Response

DanielZambranoC opened this issue · 3 comments

Hi, I've been trying to parse an answer and I still can't get it right.

I have tried in different ways, which I believe closer has been the structure provided by this tool (https://www.onlinetool.io/xmltogo/)

I need to be able to extract indexDateString and value

Can you advise me on where I am failing?

Error obtained: xml.Unmarshal error: EOF

Try 1

type GetSeriesResponse struct {
	XMLName         xml.Name `xml:"GetSeriesResponse"`
	Text            string   `xml:",chardata"`
	Xmlns           string   `xml:"xmlns,attr"`
	GetSeriesResult struct {
		Text   string `xml:",chardata"`
		Series struct {
			Text       string `xml:",chardata"`
			FameSeries struct {
				Text string `xml:",chardata"`
				Obs  []struct {
					Text            string `xml:",chardata"`
					Xmlns           string `xml:"xmlns,attr"`
					IndexDateString string `xml:"indexDateString"`
					StatusCode      string `xml:"statusCode"`
					Value           string `xml:"value"`
				} `xml:"obs"`
			} `xml:"fameSeries"`
		} `xml:"Series"`
	} `xml:"GetSeriesResult"`
} 

Try 2

type GetSeriesResponse struct {
	GetSeriesResult string `xml:"GetSeriesResult"`
}

type GetSeriesResult struct {
	XMLName xml.Name `xml:"GetSeriesResult"`
	Text    string   `xml:",chardata"`
	Series  struct {
		Text       string `xml:",chardata"`
		FameSeries struct {
			Text string `xml:",chardata"`
			Obs  []struct {
				Text            string `xml:",chardata"`
				Xmlns           string `xml:"xmlns,attr"`
				IndexDateString string `xml:"indexDateString"`
				StatusCode      string `xml:"statusCode"`
				Value           string `xml:"value"`
			} `xml:"obs"`
		} `xml:"fameSeries"`
	} `xml:"Series"`
}

Response

<GetSeriesResponse xmlns="http://bancocentral.org/">
            <GetSeriesResult>
                <Series>
                    <fameSeries>
                        <obs xmlns="">
                            <indexDateString>07-12-2020</indexDateString>
                            <statusCode>OK</statusCode>
                            <value>3.5877</value>
                        </obs>
                        <obs xmlns="">
                            <indexDateString>08-12-2020</indexDateString>
                            <statusCode>OK</statusCode>
                            <value>NaN</value>
                        </obs>
                        <obs xmlns="">
                            <indexDateString>09-12-2020</indexDateString>
                            <statusCode>OK</statusCode>
                            <value>3.6025</value>
                        </obs>
                        <obs xmlns="">
                            <indexDateString>10-12-2020</indexDateString>
                            <statusCode>OK</statusCode>
                            <value>3.6045</value>
                        </obs>
                        <obs xmlns="">
                            <indexDateString>11-12-2020</indexDateString>
                            <statusCode>OK</statusCode>
                            <value>3.5969</value>
                        </obs>
                        <obs xmlns="">
                            <indexDateString>12-12-2020</indexDateString>
                            <statusCode>OK</statusCode>
                            <value>NaN</value>
                        </obs>
                        <obs xmlns="">
                            <indexDateString>13-12-2020</indexDateString>
                            <statusCode>OK</statusCode>
                            <value>NaN</value>
                        </obs>
                        <obs xmlns="">
                            <indexDateString>14-12-2020</indexDateString>
                            <statusCode>OK</statusCode>
                            <value>3.5968</value>
                        </obs>
                        <obs xmlns="">
                            <indexDateString>15-12-2020</indexDateString>
                            <statusCode>OK</statusCode>
                            <value>3.5868</value>
                        </obs>
                    </fameSeries>
                </Series>
            </GetSeriesResult>
        </GetSeriesResponse>