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

2024年 2月 8日 58.0k 0

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

在golang中,我们经常需要处理XML数据。然而,有时候我们可能会遇到一些未知的标签,这给解组XML数据带来了一些困难。那么,如何在golang中处理这些未知标签呢?在本文中,php小编新一将介绍一些在golang中处理未知标签的方法,帮助你更好地解组XML数据。无论你是新手还是有经验的开发人员,本文都能为你提供有用的技巧和指导。让我们开始吧!

问题内容

给定一个未知结构的 XML 原始字符串(来自 OCR 结果),我应该如何将该字符串解组为可处理的 go 结构/接口?

对于 JSON,我可以做类似这样的事情,那么答案是否有 XML 版本?

示例

randomOcrXmlString := `

... (many more random tags)
`

登录后复制

我的实际意图 - 在结束 标签之前插入一个标签

解决方法

根据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?的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论