Dalam golang, apabila membaca fail xml, anda sering menghadapi masalah dengan pengepala fail xml (iaitu ), yang mungkin menyebabkan penghuraian fail xml gagal.
Berikut ialah beberapa cara untuk mengalih keluar pengepala xml.
Kita boleh menggunakan fungsi strings.Trim
untuk mengalih keluar pengepala xml, kodnya adalah seperti berikut:
func removeXmlHeader(xmlContent string) string { return strings.Trim(xmlContent, "") }
Dalam kod di atas, Kami menggunakan fungsi strings.Trim
untuk mengalih keluar tiga aksara khas pertama (iaitu aksara BOM, yang kod ASCIInya ialah
) dalam xmlContent, supaya pengepala xml boleh dialih keluar.
Cara lain untuk mengalih keluar pengepala xml ialah menggunakan objek xml.Decoder
untuk membaca fail xml dan gunakan fungsi decoder.Token
untuk mendapatkan xml fail Token objek. Jika Token ialah teg pengisytiharan (iaitu ), kita boleh melangkaunya sebelum menghuraikan fail xml, kodnya adalah seperti berikut:
func removeXmlHeader(xmlContent string) (string, error) { decoder := xml.NewDecoder(strings.NewReader(xmlContent)) var result strings.Builder for { token, err := decoder.Token() if err == io.EOF { break } if err != nil { return "", err } switch t := token.(type) { case xml.ProcInst: if t.Target == "xml" { continue } } result.WriteString(fmt.Sprintf("%v", token)) } return result.String(), nil }
Dalam kod di atas, kami cipta objek .Dekoder xml, dan kemudian gunakan fungsi decoder.Token
untuk membaca objek Token daripada fail xml. Jika objek Token dibaca ialah teg pengisytiharan (iaitu xml.ProcInst), kami menentukan sama ada sasarannya ialah xml Jika ya, langkau objek Token ini Jika tidak, teruskan membaca objek Token seterusnya sehingga keseluruhan fail xml dibaca.
Apabila kami meletakkan objek Token ke dalam rentetan. Objek Builder, kami boleh mengembalikan rentetan xml yang diproses.
Kaedah ketiga untuk mengalih keluar pengepala xml ialah menggunakan xml.Unmarshal
untuk melangkau pengepala xml semasa menghuraikan fail xml.
func removeXmlHeader(xmlContent string, v interface{}) error { xmlContent = strings.Trim(xmlContent, "") return xml.Unmarshal([]byte(xmlContent), v) }
Dalam kod di atas, kami mengalih keluar pengepala fail xml melalui fungsi strings.Trim
, dan kemudian memanggil fungsi xml.Unmarshal
untuk menghuraikan fail xml ke dalam objek sasaran, supaya pengepala xml boleh mudah dikeluarkan.
Ringkasnya, di atas adalah tiga kaedah untuk mengalih keluar pengepala XML Kaedah yang mana untuk dipilih bergantung pada keperluan perniagaan tertentu. Apabila menggunakan kaedah ini, anda perlu memberi perhatian kepada ciri-ciri setiap kaedah untuk memilih kaedah yang sesuai untuk menyelesaikan masalah.
Atas ialah kandungan terperinci golang remove xml header. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!