Rumah > pembangunan bahagian belakang > Golang > Membongkar XML dengan beberapa tag yang tidak diketahui dalam golang?

Membongkar XML dengan beberapa tag yang tidak diketahui dalam golang?

WBOY
Lepaskan: 2024-02-08 22:45:09
ke hadapan
1198 orang telah melayarinya

在 golang 中使用一些未知标签解组 XML?

Di golang, kita selalunya perlu memproses data XML. Walau bagaimanapun, kadangkala kami mungkin menghadapi beberapa teg yang tidak diketahui, yang membawa beberapa kesukaran untuk membongkar data XML. Jadi, bagaimana untuk menangani tag yang tidak diketahui ini di golang? Dalam artikel ini, editor PHP Xinyi akan memperkenalkan beberapa kaedah pengendalian tag yang tidak diketahui dalam golang untuk membantu anda menyahmarshal data XML dengan lebih baik. Sama ada anda seorang pemula atau pembangun berpengalaman, artikel ini boleh memberi anda petua dan panduan yang berguna. Mari mulakan!

Kandungan soalan

Memandangkan rentetan mentah XML struktur yang tidak diketahui (dari hasil OCR), bagaimanakah saya harus menyahmarshal rentetan itu ke dalam struktur/antara muka go yang boleh diproses?

Dengan JSON saya boleh melakukan sesuatu seperti ini, jadi adakah terdapat versi XML jawapannya?

Contoh

randomOcrXmlString := `
<container>
<x></x>
<y><z></z><y>
<abc></abc>
... (many more random tags)
</container>`
Salin selepas log masuk

Niat sebenar saya - masukkan teg sebelum teg </container> penutup </container> 标签之前插入一个标签

解决方法

根据encoding/xmlPenyelesaian

Menurut pengekodan/xml dokumentasi

, 🎜 🎜Jadi yang berikut berfungsi untuk saya🎜
type xmlResponse struct {
    Fields []byte `xml:",innerxml"`
}

func isXMLStringValid(str string) bool {
    // ref https://stackoverflow.com/a/62869933
    decoder := xml.NewDecoder(strings.NewReader(str))
    for {
        err := decoder.Decode(new(interface{}))
        if err != nil {
            return err == io.EOF
        }
    }
}

func parseRawXMLString(xmlStr string) (*xmlResponse, error) {
  if !isXMLStringValid(xmlStr) {
        return nil, errors.New(fmt.Sprintf("xml: construct: input is not valid xml: %s", xmlStr))
    }

  var xmlResp = xmlResponse{}
  err := xml.Unmarshal([]byte(xmlStr), &xmlResp)
  if err != nil {
        log.Printf("xml: unmarshal: %s", err)
        return nil, err
  }
  return &xmlResp, nil
}
Salin selepas log masuk

Atas ialah kandungan terperinci Membongkar XML dengan beberapa tag yang tidak diketahui dalam golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan