エラー: xml.NewDecoder(resp.Body).Decode Golang で EOF エラーが発生する
HTML 応答から XML をデコードしようとしたときbody では、xml.NewDecoder(resp.Body).Decode(&v) を使用すると EOF エラーが発生する可能性があります。これは、本文コンテンツがすでに 1 回読み取られている場合に発生します。
解決策
この問題を解決する鍵は、本文コンテンツの性質を理解することにあります。提供されたコードでは、ioutil.ReadAll(resp1.Body) を使用して本文のコンテンツが最初に読み取られ、文字列変数に保存されます。ただし、コンテンツが一度読み取られると、xml.NewDecoder(resp1.Body).Decode(&v) などの別の関数で再度読み取ることはできません。これにより、EOF エラーが発生します。
最も便利な解決策は、本文のコンテンツを複数回使用することです。これを実現する 1 つの方法は、バイト配列から XML をデコードできる xml.Unmarshal 関数を使用することです。したがって、xml.NewDecoder(resp1.Body).Decode(&v) を使用する代わりに、次のコードを使用できます。
<code class="go">err = xml.Unmarshal([]byte(conts1), &v) if err != nil { fmt.Printf("error is here: %v", err) return }</code>
このアプローチにより、エラーが発生することなく本文コンテンツを複数回読み取ってデコードできます。 EOF エラー。
以上がGolang で HTML 応答本文から XML をデコードするときに発生する「EOF エラー」を修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。