猿问

如何将空的xmlns=“”添加到请求的结构标记中?

你好,我是golang和编程的新手,我有一个新手问题。我无法在谷歌上找到答案。soap 服务器因 gowsdl 生成的代码而失败。但是我添加这个xmlns=“”来验证标签,它的工作原理就像一个魅力。那么我怎么能不通过字符串替换而是习惯性的方式将其添加到标签中呢?


服务器不接受



<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">

<Body xmlns="http://schemas.xmlsoap.org/soap/envelope/">

    <GetCitiesRequest xmlns="http://www.n11.com/ws/schemas">

        <auth>                     <<<<<<<<<<<<<<<<------------ fails because no xmlns=""

            <appKey>xxx</appKey>

            <appSecret>xx</appSecret>

        </auth>

    </GetCitiesRequest>

    </Body>

</Envelope>

服务器接受



 <Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">

    <Body>

        <GetCitiesRequest xmlns="http://www.n11.com/ws/schemas">

            <auth xmlns="">

                <appKey>[string]</appKey>

                <appSecret>[string]</appSecret>

            </auth>

        </GetCitiesRequest>

    </Body>

</Envelope>


im使用快速修复:


buffers := new(bytes.Buffer)

buffers.WriteString(strings.ReplaceAll(buffer.String(),"<auth>","<auth xmlns=\"\">"))


req, err := http.NewRequest("POST", s.url, buffers)


我应该添加什么结构标签来查看空的xmlns=“” ?


type GetCitiesRequest struct {

    XMLName xml.Name `xml:"http://www.n11.com/ws/schemas GetCitiesRequest"`


    Auth *Authentication `xml:"auth,omitempty" json:"auth,omitempty"`

}

type Authentication struct {

    AppKey string `xml:"appKey,omitempty" json:"appKey,omitempty"`


    AppSecret string `xml:"appSecret,omitempty" json:"appSecret,omitempty"`

}

阿洛斯我试过了;


type Authentication struct {

   XMLName xml.Name `xml:""`


   AppKey string `xml:"appKey,omitempty" json:"appKey,omitempty"`


   AppSecret string `xml:"appSecret,omitempty" json:"appSecret,omitempty"`

}



   auth := Authentication{AppKey:"secret",AppSecret:"secret"}

   auth.XMLName.Local= "auth"

   auth.XMLName.Space = ""


我也尝试 auth.XMLName.Space = “ ” 空白空间,但xml.marshal将其转换为转义字符,如“&quote,#34”


我想了解我如何做到像专业的方式,但不是菜鸟的方式。任何帮助赞赏。谢谢。


哔哔one
浏览 82回答 1
1回答

繁花不似锦

https://golang.org/pkg/encoding/xml/#Marshal带有标记“name,attr”的字段将成为 XML 元素中具有给定名称的属性。带有标记 “,attr” 的字段将成为 XML 元素中具有字段名称的属性。type&nbsp;Authentication&nbsp;struct&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;Xmlns&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;`xml:"xmlns,attr"&nbsp;json:"-"` &nbsp;&nbsp;&nbsp;&nbsp;AppKey&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;`xml:"appKey,omitempty"&nbsp;json:"appKey,omitempty"` &nbsp;&nbsp;&nbsp;&nbsp;AppSecret&nbsp;string&nbsp;`xml:"appSecret,omitempty"&nbsp;json:"appSecret,omitempty"`}https://play.golang.org/p/iIvlUoaYvgB
随时随地看视频慕课网APP

相关分类

Go
我要回答