Rumah  >  Artikel  >  pembangunan bahagian belakang  >  golang remove xml header

golang remove xml header

WBOY
WBOYasal
2023-05-15 11:33:07704semak imbas

Dalam golang, apabila membaca fail xml, anda sering menghadapi masalah dengan pengepala fail xml (iaitu b5f4b4903f55a747b1eeb49700e805ed), yang mungkin menyebabkan penghuraian fail xml gagal.

Berikut ialah beberapa cara untuk mengalih keluar pengepala xml.

Kaedah pertama: keluarkan pengepala xml secara manual

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.

Kaedah kedua: Gunakan xml.Decoder

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 b5f4b4903f55a747b1eeb49700e805ed), 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: gunakan xml.Unmarshal

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn