Maison >développement back-end >Golang >Décomposer XML avec des balises inconnues dans Golang ?
En Golang, nous avons souvent besoin de traiter des données XML. Cependant, nous pouvons parfois rencontrer des balises inconnues, ce qui entraîne certaines difficultés lors de la désagrégation des données XML. Alors, comment gérer ces balises inconnues dans Golang ? Dans cet article, l'éditeur PHP Xinyi présentera quelques méthodes de gestion des balises inconnues dans Golang pour vous aider à mieux désassembler les données XML. Que vous soyez débutant ou développeur expérimenté, cet article peut vous fournir des conseils et des conseils utiles. commençons!
Étant donné une chaîne brute XML de structure inconnue (à partir du résultat OCR), comment dois-je désorganiser la chaîne dans une structure/interface go traitable ?
Avec JSON, je peux faire quelque chose comme ça, alors existe-t-il une version XML de la réponse ?
Exemple
randomOcrXmlString := ` <container> <x></x> <y><z></z><y> <abc></abc> ... (many more random tags) </container>`
Mon intention réelle - insérer une balise avant la balise de fermeture 2706a1e7c77ff18e07182931ad8578f7
2706a1e7c77ff18e07182931ad8578f7
标签之前插入一个标签
根据encoding/xml
Solution de contournement
Selon encodage/xml
documentation
type xmlResponse struct { Fields []byte `xml:",innerxml"` } func isXMLStringValid(str string) bool { // ref https://stackoverflow.com/a/62869933 decoder := xml.NewDecoder(strings.NewReader(str)) for { err := decoder.Decode(new(interface{})) if err != nil { return err == io.EOF } } } func parseRawXMLString(xmlStr string) (*xmlResponse, error) { if !isXMLStringValid(xmlStr) { return nil, errors.New(fmt.Sprintf("xml: construct: input is not valid xml: %s", xmlStr)) } var xmlResp = xmlResponse{} err := xml.Unmarshal([]byte(xmlStr), &xmlResp) if err != nil { log.Printf("xml: unmarshal: %s", err) return nil, err } return &xmlResp, nil }
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!