登录
首页 >  Golang >  Go问答

Golang XML解组:忽略命名空间

来源:stackoverflow

时间:2024-03-09 23:54:24 261浏览 收藏

在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是Golang学习者,那么本文《Golang XML解组:忽略命名空间》就很适合你!本篇内容主要包括##content_title##,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我正在 go 系统中实现一项服务,该服务从外部 soap 服务读取数据。现在我正在为其编写测试,我遇到了这个问题:

unable to unmarshal request body for testing: expected element type  but have 

如果我转储数据,我会得到以下结果:



所以我在 xml 中有正确的命名空间。根据记录,这是我试图将数据解组到的结构:

type collectRequestXML struct {
    XMLName xml.Name `xml:"soapenv:Envelope"`
    SoapEnv string   `xml:"xmlns:soapenv,attr"`
    XMLNs   string   `xml:"xmlns:v2,attr"`
    Header  struct{} `xml:"soapenv:Header"`
    Body    struct {
        [...]
    }
}

我该怎么做才能使解组失败?

请参阅此演示项目以供参考。


解决方案


xml 包的文档对命名空间的描述不够。解析非常简单。对命名空间有少量支持。它可以解析 xml,但是当您创建 xml 时,ist 不支持命名空间。

当您删除 xmlname 定义中的命名空间信息时,您的结构可以正常工作:

type myStruct struct {
    XMLName xml.Name `xml:"Envelope"`
    SoapEnv string   `xml:"xmlns:soapenv,attr"`
    Header  struct{} `xml:"soapenv:Header"`
    Body    struct {
        MyData string `xml:"my-data"`
    }
}

https://play.golang.org/p/UppXwx0X0i9

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《Golang XML解组:忽略命名空间》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>