由gowsdl根据NetSuite SuiteTalk web service definition生成的一组类型:
<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标记中的名称“ signature”与* main.TokenPassportSignature.XMLName中的名称“ TokenPassportSignature”冲突
我已经extracted out the relevant bits into Go Playground确认这是引发错误的编码器。根据{{3}}的文档,该字段似乎必须匹配:
如果两个字段标记都定义了结构字段的XML名称 和结构的XMLName字段,名称必须匹配。
对如何进行有任何想法吗?
答案 0 :(得分:0)
或者,人们可能更喜欢保留嵌入式结构的名称TokenPassportSignature
而不是名称signature
。
如果是字段的命名,则该行将变为:
Signature *TokenPassportSignature `xml:",omitempty"`