This Plist library is used for decoding and encoding Apple Property Lists in both XML and binary forms.
Example using HTTP streams:
func someHTTPHandler(w http.ResponseWriter, r *http.Request) {
var sparseBundleHeader struct {
InfoDictionaryVersion *string `plist:"CFBundleInfoDictionaryVersion"`
BandSize *uint64 `plist:"band-size"`
BackingStoreVersion int `plist:"bundle-backingstore-version"`
DiskImageBundleType string `plist:"diskimage-bundle-type"`
Size uint64 `plist:"unknownKey"`
Payload []any `plist:"payload"`
}
// decode an HTTP request body into the sparseBundleHeader struct
if err := plist.NewXMLDecoder(r.Body).Decode(&sparseBundleHeader); err != nil {
log.Println(err)
return
}
}
This library is based on the DHowett go-plist library but has an API that is more like the XML and JSON package in the Go standard library. I.e. the plist.Decoder()
accepts an io.Reader
instead of an io.ReadSeeker