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 關注
- 123 瀏覽
添加回答
舉報