首頁 > 後端開發 > Golang > 主體

在 golang 中使用一些未知標籤解組 XML?

WBOY
發布: 2024-02-08 22:45:09
轉載
1138 人瀏覽過

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

在golang中,我們常常需要處理XML資料。然而,有時候我們可能會遇到一些未知的標籤,這給解組XML資料帶來了一些困難。那麼,如何在golang中處理這些未知標籤呢?在本文中,php小編新一將介紹一些在golang中處理未知標籤的方法,幫助你更好地解組XML資料。無論你是新手還是有經驗的開發人員,本文都能提供你有用的技巧和指導。讓我們開始吧!

問題內容

給定一個未知結構的 XML 原始字串(來自 OCR 結果),我應該如何將該字串解組為可處理的 go 結構/介面?

對於 JSON,我可以做類似這樣的事情,那麼答案是否有 XML 版本?

範例

randomOcrXmlString := `
<container>
<x></x>
<y><z></z><y>
<abc></abc>
... (many more random tags)
</container>`
登入後複製

我的實際意圖- 在結束</container> 標籤之前插入一個標籤

解決方法

根據encoding/xml 文件,

所以下面對我有用

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
}
登入後複製

以上是在 golang 中使用一些未知標籤解組 XML?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!