Maison  >  Article  >  développement back-end  >  Comment corriger « Erreur EOF » lors du décodage XML à partir du corps de réponse HTML dans Golang ?

Comment corriger « Erreur EOF » lors du décodage XML à partir du corps de réponse HTML dans Golang ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-01 20:14:02133parcourir

How to Fix

Erreur : xml.NewDecoder(resp.Body).Decode donnant une erreur EOF dans Golang

Lors de la tentative de décodage XML à partir d'une réponse HTML body, vous pouvez rencontrer une erreur EOF lors de l'utilisation de xml.NewDecoder(resp.Body).Decode(&v). Cela se produit lorsque le contenu du corps a déjà été lu une fois.

Solution

La clé pour résoudre ce problème réside dans la compréhension de la nature du contenu du corps. Dans le code fourni, le contenu du corps est d'abord lu et stocké dans une variable chaîne à l'aide de ioutil.ReadAll (resp1.Body). Cependant, une fois le contenu lu, il ne peut pas être relu par une autre fonction, telle que xml.NewDecoder(resp1.Body).Decode(&v). Cela entraîne l'erreur EOF.

La solution la plus pratique consiste à utiliser le contenu du corps plusieurs fois. Une façon d'y parvenir consiste à utiliser la fonction xml.Unmarshal, qui vous permet de décoder le XML à partir d'un tableau d'octets. Par conséquent, au lieu d'utiliser xml.NewDecoder(resp1.Body).Decode(&v), vous pouvez utiliser le code suivant :

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

Cette approche vous permet de lire et de décoder le contenu du corps plusieurs fois sans rencontrer l'erreur EOF.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn