XML Golang im Blog der J&J Ideenschmiede

von

XML in GO


Das Dateiformat .xml ist sehr beliebt um Datenmengen von Service A zu Service B zu übertragen. Aber wie genau können Sie diese Dateien auslesen?

Das werden wir Ihnen in diesem kleinen Tutorial erklären. Wenn Sie etwas mit GO vertraut ist, dann sollte das ganze kein Problem für Sie sein. Dabei gehen wir nun wie folgt vor. Dafür haben wir für Sie eine Beispiel Datei herausgesucht. Diese finden Sie hier.

Wenn Sie sich diese Datei genauer ansehen, dann sehen Sie, dass es eine XML Datei einen ähnlichen Aufbau wie eine HTML Datei hat.

Nur wie können Sie diese nun auslesen?

Dazu können wir onboard Mittel von GO nutzen. Sie werden für dieses Beispiel folgende Pakete nutzen: „encoding/xml“, „fmt“, „io/ioutil“, „os“.

Wenn Sie sich unser Beispiel ansehen, dann sehen Sie das wir erst die Struktur der XML Datei in structs nachgebaut haben. Ähnlich wie man es auch bei JSON Dateien macht. Im zweiten Schritt öffnen wir die Datei mit dem os. Paket. Und angeben direkt wieder an, dass es nach Beendigung der Funktion wieder geschlossen werden soll. In den folgenden Schritten lesen Sie die gesamte Datei einmal aus und verarbeiten diese.

package main
import (
	"encoding/xml"
	"fmt"
	"io/ioutil"
	"os"
)
type Catalog struct {
	XMLName xml.Name `xml:"catalog"`
	Books   []Book   `xml:"book"`
}
type Book struct {
	XMLName     xml.Name `xml:"book"`
	ID          string   `xml:"id,attr"`
	Author      string   `xml:"author"`
	Title       string   `xml:"title"`
	Genre       string   `xml:"genre"`
	Price       float64  `xml:"price"`
	PublishDate string   `xml:"publish_date"`
	Description string   `xml:"description"`
}
func main() {
	// Open xml file
	file, err := os.Open("test.xml")
	if err != nil {
		fmt.Println(err)
	}
	// Close file
	defer file.Close()
	// Read xml file
	bytes, err := ioutil.ReadAll(file)
	if err != nil {
		fmt.Println(err)
	}
	// Save users
	var catalog Catalog
	// Unmarshal xml
	xml.Unmarshal(bytes, &catalog)
	for _, value := range catalog.Books {
		fmt.Println(value.ID)
		fmt.Println(value.Author)
		fmt.Println(value.Price)
	}
}

Wie Sie sehen können Sie, nach der Verarbeitung, mit den Daten vorgehen wie Sie es möchten. Und diese nun in einer Datenbank hinterlegen oder als Beispiel in ein anderes Dateiformat umwandeln.

Ich hoffe Ihnen hat dieses Tutorial geholfen! Wenn Sie Fragen haben, dann schreiben Sie diese gerne in die Kommentare.

Pfeil links

zur vorherigen Seite zurückkehren