gpt4 book ai didi

xml - 在 GOLANG 中使用带有命名空间的 SOAP

转载 作者:数据小太阳 更新时间:2023-10-29 03:16:29 28 4
gpt4 key购买 nike

我是一个 GO 新手,开始学习如何处理 SOAP 请求。我在命名空间方面遇到了困难:我不知道如何构建结构来反射(reflect)来自 web 服务的此类数据,以便对其进行解码。你能给我一些提示吗?我正在使用 GO 1.5.1

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://webapi.allegro.pl/service.php">
<SOAP-ENV:Body>
<ns1:doQueryAllSysStatusResponse>
<ns1:sysCountryStatus>

<ns1:item>
<ns1:countryId>1</ns1:countryId>
<ns1:programVersion>1.0</ns1:programVersion>
<ns1:catsVersion>1.1.87</ns1:catsVersion>
<ns1:apiVersion>1.0</ns1:apiVersion>
<ns1:attribVersion>1.0</ns1:attribVersion>
<ns1:formSellVersion>1.4.46</ns1:formSellVersion>
<ns1:siteVersion>1.0</ns1:siteVersion>
<ns1:verKey>123131231</ns1:verKey>
</ns1:item>

<ns1:item>
<ns1:countryId>56</ns1:countryId>
<ns1:programVersion>1.0</ns1:programVersion>
<ns1:catsVersion>1.0.43</ns1:catsVersion>
<ns1:apiVersion>1.0</ns1:apiVersion>
<ns1:attribVersion>1.0</ns1:attribVersion>
<ns1:formSellVersion>1.0.69</ns1:formSellVersion>
<ns1:siteVersion>1.0</ns1:siteVersion>
<ns1:verKey>00000101</ns1:verKey>
</ns1:item>
</ns1:sysCountryStatus>
</ns1:doQueryAllSysStatusResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

最佳答案

您可以创建一个与您的 SOAP 数据相匹配的结构,然后使用“encoding/xml”包将其解码

结构:

type Envelope struct {
XMLName xml.Name `xml:"SOAP-ENV:Envelope"`
Body Body `xml:"SOAP-ENV:Body"`
}

type Body struct {
StatusRes *DoQueryAllSysStatusResponse `xml:"ns1:doQueryAllSysStatusResponse"`
}

type DoQueryAllSysStatusResponse struct {
CountryStatus *SysCountryStatus `xml:"ns1:sysCountryStatus"`
}

// ...

解码:

data := []byte{} // SOAP data
env := &Envelope{}
err := xml.Unmarshal(data, env)
if err != nil {
// do something
}

关于xml - 在 GOLANG 中使用带有命名空间的 SOAP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32946927/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com