Heim >Backend-Entwicklung >Golang >Wie behebt man den „EOF-Fehler' beim Dekodieren von XML aus dem HTML-Antworttext in Golang?

Wie behebt man den „EOF-Fehler' beim Dekodieren von XML aus dem HTML-Antworttext in Golang?

Barbara Streisand
Barbara StreisandOriginal
2024-11-01 20:14:02232Durchsuche

How to Fix

Fehler: xml.NewDecoder(resp.Body).Decode gibt einen EOF-Fehler in Golang aus

Beim Versuch, XML aus einer HTML-Antwort zu dekodieren body kann es zu einem EOF-Fehler kommen, wenn Sie xml.NewDecoder(resp.Body).Decode(&v) verwenden. Dies geschieht, wenn der Textinhalt bereits einmal gelesen wurde.

Lösung

Der Schlüssel zur Lösung dieses Problems liegt im Verständnis der Natur des Textinhalts. Im bereitgestellten Code wird zunächst der Textinhalt gelesen und mithilfe von ioutil.ReadAll(resp1.Body) in einer Zeichenfolgenvariablen gespeichert. Sobald der Inhalt jedoch gelesen wurde, kann er nicht erneut von einer anderen Funktion gelesen werden, z. B. xml.NewDecoder(resp1.Body).Decode(&v). Dies führt zum EOF-Fehler.

Die bequemste Lösung besteht darin, den Körperinhalt mehrmals zu verwenden. Eine Möglichkeit, dies zu erreichen, ist die Funktion xml.Unmarshal, mit der Sie XML aus einem Byte-Array dekodieren können. Daher können Sie anstelle von xml.NewDecoder(resp1.Body).Decode(&v) den folgenden Code verwenden:

<code class="go">err = xml.Unmarshal([]byte(conts1), &v)
if err != nil {
    fmt.Printf("error is here: %v", err)
    return
}</code>

Mit diesem Ansatz können Sie den Textkörperinhalt mehrmals lesen und dekodieren, ohne auf ihn zu stoßen der EOF-Fehler.

Das obige ist der detaillierte Inhalt vonWie behebt man den „EOF-Fehler' beim Dekodieren von XML aus dem HTML-Antworttext in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn