我试图获得以下
XML输出
<?xml version="1.0" encoding="UTF-8"?> <CreateHostedZoneRequest xmlns="https://route53.amazonaws.com/doc/2012-12-12/"> <Name>DNS domain name</Name> <CallerReference>unique description</CallerReference> <HostedZoneConfig> <Comment>optional comment</Comment> </HostedZoneConfig> </CreateHostedZoneRequest>
我有以下输出非常接近的XML,但我无法编码到CreateHostedZoneRequest
xmlns=”https://route53.amazonaws.com/doc/2012-12-12/
package main import "fmt" import "encoding/xml" type ZoneRequest struct { Name string CallerReference string Comment string `xml:"HostedZoneConfig>Comment"` } var zoneRequest = ZoneRequest{ Name: "DNS domain name",CallerReference: "unique description",Comment: "optional comment",} func main() { tmp,_ := createHostedZoneXML(zoneRequest) fmt.Println(tmp) } func createHostedZoneXML(zoneRequest ZoneRequest) (response string,err error) { tmp := struct { ZoneRequest XMLName struct{} `xml:"CreateHostedZoneRequest"` }{ZoneRequest: zoneRequest} byteXML,err := xml.MarshalIndent(tmp,"",` `) if err != nil { return "",err } response = xml.Header + string(byteXML) return }
http://play.golang.org/p/pyK76VPD5-
如何将xmlns编码到CreateHostedZoneRequest中?
你可以这样做,这可能不是最优雅的解决方案,但似乎工作
type ZoneRequest struct { Name string CallerReference string Comment string `xml:"HostedZoneConfig>Comment"` Xmlns string `xml:"xmlns,attr"` } var zoneRequest = ZoneRequest{ Name: "DNS domain name",Xmlns: "https://route53.amazonaws.com/doc/2012-12-12/",}
生产
<?xml version="1.0" encoding="UTF-8"?> <CreateHostedZoneRequest xmlns="https://route53.amazonaws.com/doc/2012-12-12/"> <Name>DNS domain name</Name> <CallerReference>unique description</CallerReference> <HostedZoneConfig> <Comment>optional comment</Comment> </HostedZoneConfig> </CreateHostedZoneRequest>