С набором типов, генерируемых gowsdl на основе определения веб-службы NetSuite SuiteTalk :
<complexType name="TokenPassportSignature">
<simpleContent>
<extension base="xsd:string">
<attribute name="algorithm" type="xsd:string" use="required"/>
</extension>
</simpleContent>
</complexType>
<complexType name="TokenPassport">
<sequence>
<element name="account" type="xsd:string"/>
<element name="consumerKey" type="xsd:string"/>
<element name="token" type="xsd:string"/>
<element name="nonce" type="xsd:string"/>
<element name="timestamp" type="xsd:long"/>
<element name="signature" type="platformCore:TokenPassportSignature"/>
</sequence>
</complexType>
Созданы следующие типы:
type TokenPassportSignature struct {
XMLName xml.Name `xml:"urn:core_2018_2.platform.webservices.netsuite.com TokenPassportSignature"`
Value string
Algorithm string `xml:"algorithm,attr,omitempty"`
}
type TokenPassport struct {
XMLName xml.Name `xml:"urn:core_2018_2.platform.webservices.netsuite.com TokenPassport"`
Account string `xml:"account,omitempty"`
ConsumerKey string `xml:"consumerKey,omitempty"`
Token string `xml:"token,omitempty"`
Nonce string `xml:"nonce,omitempty"`
Timestamp int64 `xml:"timestamp,omitempty"`
Signature *TokenPassportSignature `xml:"signature,omitempty"`
}
Когда я пытаюсь обработать его через клиента, процессу кодирования XML не нравится, что поле Signature имеет конфликтующее имя.
xml: имя «подпись» в теге main.TokenPassport.Signature конфликтует с именем «TokenPassportSignature» в * main.TokenPassportSignature.XMLName
Я извлек соответствующие биты в Go Playground , чтобы подтвердить, что это кодер, который выдает ошибку.Исходя из документов для Marhsal , кажется, что поле должно совпадать:
Если имя XML для поля структуры определяется как тегом поля, так и полем XMLName структуры,имена должны совпадать.
Есть мысли о том, как поступить?