Heim >Backend-Entwicklung >Golang >XML mit einigen unbekannten Tags in Golang entmarshaling?
In Golang müssen wir häufig XML-Daten verarbeiten. Manchmal stoßen wir jedoch auf unbekannte Tags, was das Unmarshaling von XML-Daten erschwert. Wie geht man also mit diesen unbekannten Tags in Golang um? In diesem Artikel stellt der PHP-Editor Xinyi einige Methoden zum Umgang mit unbekannten Tags in Golang vor, um Ihnen beim besseren Unmarshing von XML-Daten zu helfen. Egal, ob Sie ein Neuling oder ein erfahrener Entwickler sind, dieser Artikel kann Ihnen nützliche Tipps und Anleitungen geben. Lasst uns beginnen!
Wie soll ich bei einer XML-Rohzeichenfolge mit unbekannter Struktur (aus dem OCR-Ergebnis) die Zeichenfolge in eine verarbeitbare Go-Struktur/Schnittstelle auspacken?
Mit JSON kann ich so etwas machen. Gibt es also eine XML-Version der Antwort?
Beispiel
randomOcrXmlString := ` <container> <x></x> <y><z></z><y> <abc></abc> ... (many more random tags) </container>`
Meine eigentliche Absicht – ein Tag vor dem schließenden 2706a1e7c77ff18e07182931ad8578f7
-Tag einfügen 2706a1e7c77ff18e07182931ad8578f7
标签之前插入一个标签
根据encoding/xml
Workaround
Laut encoding/xml
Dokumentation
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 }
Das obige ist der detaillierte Inhalt vonXML mit einigen unbekannten Tags in Golang entmarshaling?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!