Biblioteka Go do parsowania plików XML zamówień Fischer Panda w formatach zamdet i zamgen.
- Automatyczne wykrywanie typu zamówienia (zamdet lub zamgen)
- Parsowanie plików XML z dysku
- Parsowanie danych XML z bajów (przydatne dla API)
- Wsparcie dla wszystkich pól zamówienia
- Struktura JSON-ready dla łatwej serializacji
go get github.com/kjuchniewicz/orderspackage main
import (
"fmt"
"log"
"github.com/kjuchniewicz/orders"
)
func main() {
// Parsuj plik XML
order, err := orders.ExtractOrder("zamowienie.xml")
if err != nil {
log.Fatal(err)
}
fmt.Printf("Nr zamówienia: %s\n", order.NrZamowienia)
fmt.Printf("Data: %s\n", order.DataZamowienia)
for _, line := range order.Wiersze {
fmt.Printf("Wiersz %d: %s\n", line.PrintID, line.Nazwa)
}
}package main
import (
"fmt"
"io"
"log"
"net/http"
"github.com/kjuchniewicz/orders"
)
func handleUpload(w http.ResponseWriter, r *http.Request) {
// Odczytaj plik z formularza
file, _, err := r.FormFile("xml")
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
defer file.Close()
// Odczytaj zawartość do bajów
xmlData, err := io.ReadAll(file)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
// Parsuj zamówienie
order, err := orders.ExtractOrderFromBytes(xmlData)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
// Zwróć jako JSON
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(order)
}Format szczegółowy zawierający:
- Nazwę produktu
- Numer artykułu
- Cenę jednostkową, walutę
- Opisy (Opis1-4)
- Pole "Dostarczyc" z listą akcesoriów
Format ogólny zawierający:
- Nazwę produktu
- Numer artykułu i seryjny
- Klienta
- Numer zlecenia
type OrderHeader struct {
NrZamowienia string `json:"nr_zamowienia"`
DataZamowienia string `json:"data_zamowienia"`
OsobaKontaktowa string `json:"osoba_kontaktowa"`
Wiersze []OrderLine `json:"wiersze"`
}
type OrderLine struct {
PrintID int `json:"print_id"`
Nazwa string `json:"nazwa"`
NumerArtykulu string `json:"numer_artykulu"`
Termin string `json:"termin"`
Ilosc string `json:"ilosc"`
Suma string `json:"suma"`
// Pola specyficzne dla zamdet
JednostkaMiary string `json:"jednostka_miary"`
CenaJednostkowa string `json:"cena_jednostkowa"`
Waluta string `json:"waluta"`
Opis1 string `json:"opis1"`
Opis2 string `json:"opis2"`
Opis3 string `json:"opis3"`
Opis4 string `json:"opis4"`
Dostarczyc string `json:"dostarczyc"`
// Pola specyficzne dla zamgen
Seriennr string `json:"seriennr,omitempty"`
Auftrag string `json:"auftrag,omitempty"`
Kunde string `json:"kunde,omitempty"`
}Zobacz katalog example/ dla pełnego przykładu aplikacji CLI.
cd example
go run . ../zamdet1.xmlProprietary - Fischer Panda