1 回答
TA贡献1796条经验 获得超4个赞
(按编号问题的顺序)
1. 啊,你太近了!最重要的是,你领导了“xsi:”和“xmlns:”,你不需要这样做。我确实认为Go忽略了这些值,只是在之后查看字段。
以您的信封结构为例,它应该是这样的(您的其他结构也需要在适当的情况下进行调整):
type Envelope struct {
XMLName xml.Name `xml:"Envelope"`
XMLNSs string `xml:"soap,attr"` // Note the lack of `xmlns:`
XMLNSxsi string `xml:"xsi,attr"`
XMLNSxsd string `xml:"xsd,attr"`
Body Body `xml:"Body"` // Note how we tell go about the body tag here
}
在上面的代码块中已经稍微触及了这一点。但是,是的,有许多不同的方法可以做到这一点,但是我将发布一个转到 Playground 的链接,您可以在其中找到一系列结构的工作示例,这些结构可以正确解析您提供的 SOAP XML。body
https://play.golang.org/p/L2F4bduac-3
3. 不,您可以选择仅定义 SOAP 中所需的内容。让我们假装你只需要公司ID。你可以创建你的结构:
type OnlyCompanyID struct {
XMLName xml.Name `xml:"Envelope"`
CompanyID int `xml:"Body>GetCompanyWsdkUrlResponse>GetCompanyWsdkUrlResult>CompanyId"`
}
编辑:我强烈建议把我放进操场的东西弄乱。在我看来,解开 XML 比 Go 中的 JSON/YML 这样更简单的东西要棘手一些。请随时放弃任何后续问题,我可以看到我能做些什么来解决这些问题:)
- 1 回答
- 0 关注
- 100 浏览
添加回答
举报