golang中的变量xml标记
我正试图通过我的go程序与SOAP服务通信,但我在使用时遇到了困难 我必须发送的大多数请求的格式如下:golang中的变量xml标记,xml,go,Xml,Go,我正试图通过我的go程序与SOAP服务通信,但我在使用时遇到了困难 我必须发送的大多数请求的格式如下: <s:Envelope xmlns="namespace1"> <s:Body> <FunctionName xmlns=“namespace2”/> </s:Body> </s:Envelope> 我觉得我必须为我想发出的每个请求创建一个类型,因为FunctionNamechanges…'这是我目前使用的代码
<s:Envelope xmlns="namespace1">
<s:Body>
<FunctionName xmlns=“namespace2”/>
</s:Body>
</s:Envelope>
我觉得我必须为我想发出的每个请求创建一个类型,因为FunctionName
changes…'这是我目前使用的代码
如果我可以有一个属性为FunctionName
的单一类型就好了,但我就是不知道如何。。。为了更清楚,我想在xml:s:Body>FunctionName“
中放置一个变量,而不是FunctionName
非常感谢你的帮助 您可以使用一个字段来指定要在XML输出中使用的标记名。请注意,使用xml.Name
还可以指定名称空间,因此您甚至不再需要仅用于设置名称空间属性的Command.Field
这是您修改过的代码:
type Command struct {
XMLName xml.Name
}
type XMLEnvelop struct {
XMLName xml.Name `xml:"s:Envelope"`
Xmlns string `xml:"xmlns:s,attr"`
FunctionName Command `xml:"s:Body>FunctionName"`
}
v := &XMLEnvelop{Xmlns: "namespace1",
FunctionName: Command{xml.Name{"namespace2", "MyFuncName"}}}
output, err := xml.MarshalIndent(v, "", " ")
if err != nil {
fmt.Printf("error: %v\n", err)
}
// Write the output to check
os.Stdout.Write(output)
输出(在上尝试):
<s:Envelope xmlns:s="namespace1">
<s:Body>
<MyFuncName xmlns="namespace2"></MyFuncName>
</s:Body>
</s:Envelope>