Heim > Artikel > Backend-Entwicklung > Wie behebt man den „EOF-Fehler“ beim Dekodieren von XML aus dem HTML-Antworttext in Golang?
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!