ホームページ  >  記事  >  バックエンド開発  >  Golang で HTML 応答本文から XML をデコードするときに発生する「EOF エラー」を修正する方法

Golang で HTML 応答本文から XML をデコードするときに発生する「EOF エラー」を修正する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-11-01 20:14:02133ブラウズ

How to Fix

エラー: 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。