XML mit einigen unbekannten Tags in Golang entmarshaling?

WBOY
Freigeben: 2024-02-08 22:45:09
nach vorne
1138 Leute haben es durchsucht

在 golang 中使用一些未知标签解组 XML?

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!

Frageninhalt

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>`
Nach dem Login kopieren

Meine eigentliche Absicht – ein Tag vor dem schließenden </container>-Tag einfügen </container> 标签之前插入一个标签

解决方法

根据encoding/xmlWorkaround

Laut encoding/xml Dokumentation

, 🎜 🎜Das Folgende funktioniert also für mich🎜
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
}
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!