Maison > Article > développement back-end > golang supprime l'en-tête XML
Dans Golang, lors de la lecture de fichiers XML, vous rencontrez souvent des problèmes avec l'en-tête du fichier XML (c'est-à-dire f8368f4699af9817ef58ddbc8cd9cdc3), ce qui peut entraîner l'échec de l'analyse du fichier XML.
Voici quelques façons de supprimer les en-têtes XML.
Nous pouvons utiliser la fonction strings.Trim
pour supprimer l'en-tête XML. Le code est le suivant : strings.Trim
函数将xml头部去掉,代码如下:
func removeXmlHeader(xmlContent string) string { return strings.Trim(xmlContent, "") }
在上面的代码中,我们使用 strings.Trim
函数将xmlContent中的前三个特殊字符(即BOM字符,其ASCII码为
)去掉,这样就可以去掉xml头了。
另一种去掉xml头的方法是使用 xml.Decoder
对象读取xml文件,并使用 decoder.Token
函数获取xml文件中的Token对象。如果Token是声明标签(即0e907110e18727e52ff27452bbf25105),我们就可以在解析xml文件之前跳过它,代码如下:
func removeXmlHeader(xmlContent string) (string, error) { decoder := xml.NewDecoder(strings.NewReader(xmlContent)) var result strings.Builder for { token, err := decoder.Token() if err == io.EOF { break } if err != nil { return "", err } switch t := token.(type) { case xml.ProcInst: if t.Target == "xml" { continue } } result.WriteString(fmt.Sprintf("%v", token)) } return result.String(), nil }
在上面的代码中,我们创建了一个 xml.Decoder 对象,然后使用decoder.Token
函数从xml文件中读取Token对象。如果读取的Token对象是声明标签(即xml.ProcInst),我们判断其目标是否为xml,如果是则跳过此Token对象,否则继续读取下一个Token对象,直到读完整个xml文件。
当我们把Token对象放入strings.Builder对象中后,就可以返回处理后的xml字符串了。
第三种去掉xml头的方法是使用 xml.Unmarshal
来解析xml文件时跳过xml头。
func removeXmlHeader(xmlContent string, v interface{}) error { xmlContent = strings.Trim(xmlContent, "") return xml.Unmarshal([]byte(xmlContent), v) }
在上面的代码中,我们通过 strings.Trim
函数去掉了xml文件头部,然后调用 xml.Unmarshal
rrreee
La fonction strings.Trim
supprime les trois premiers caractères spéciaux (c'est-à-dire les caractères de nomenclature, dont le code ASCII est
) dans xmlContent, afin que l'en-tête XML puisse être supprimé. Deuxième méthode : utilisez xml.Decoder🎜🎜Une autre façon de supprimer l'en-tête XML consiste à utiliser l'objet xml.Decoder
pour lire le fichier XML et à utiliser decoder.Token
La fonction obtient l'objet Token dans le fichier XML. Si le Token est une balise de déclaration (c'est-à-dire 0e907110e18727e52ff27452bbf25105), nous pouvons l'ignorer avant d'analyser le fichier XML. Le code est le suivant : 🎜rrreee🎜Dans le code ci-dessus, nous créons un objet xml.Decoder. , Utilisez ensuite la fonction decoder.Token
pour lire l'objet Token à partir du fichier XML. Si l'objet Token lu est une balise de déclaration (c'est-à-dire xml.ProcInst), nous déterminons si sa cible est XML. Si tel est le cas, ignorez cet objet Token. Sinon, continuez à lire l'objet Token suivant jusqu'à ce que l'intégralité du fichier XML soit lue. 🎜🎜Après avoir placé l'objet Token dans l'objet strings.Builder, nous pouvons renvoyer la chaîne XML traitée. 🎜🎜La troisième méthode : utilisez xml.Unmarshal🎜🎜La troisième méthode pour supprimer l'en-tête XML consiste à utiliser xml.Unmarshal
pour ignorer l'en-tête XML lors de l'analyse du fichier XML. 🎜rrreee🎜Dans le code ci-dessus, nous supprimons l'en-tête du fichier XML via la fonction strings.Trim
, puis appelons la fonction xml.Unmarshal
pour analyser le fichier XML. dans l'objet cible, afin que vous puissiez facilement supprimer l'en-tête XML. 🎜🎜Pour résumer, les trois méthodes ci-dessus pour supprimer l'en-tête XML. La méthode à choisir dépend des besoins spécifiques de l'entreprise. Lorsque vous utilisez ces méthodes, vous devez faire attention aux caractéristiques de chaque méthode afin de choisir la méthode appropriée pour résoudre le problème. 🎜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!