golang xml value 为html的时候如何避免转义?

golang xml html cdata 被转义 avoid escape

func RichMediaTest() {
    type request struct {
        XMLName    xml.Name    `xml:"requestAA"`
        Type       string      `xml:"type,attr"`
        HtmlString interface{} `xml:"htmlStr"`
        Html       string      `xml:"Html"`
        Clicktype  string      `xml:"htmlString"`
        Clickurl   string      `xml:"clickurl"`
        Urltype    string      `xml:"urltype"`
        Refresh    string      `xml:"refresh"`
        Scale      string      `xml:"scale"`
    }

    var v request
    v = request{Type: "xx",
        HtmlString: struct {
            Value string `xml:",innerxml"`
        }{"<a href='xx'/> "},
        Html:      "<a  href='xxx.com' />",
        Clicktype: "safari",
        Clickurl:  "http://xxxx.com",
        Urltype:   "link",
        Refresh:   "30",
        Scale:     "no",
    }

    xmlstr, err := xml.MarshalIndent(v, " ", "  ")
    //xmlstr, err := xml.Marshal(v)
    if err != nil {
        fmt.Printf("error: %v", err)
        return
    }
    xmlstr = []byte(xml.Header + string(xmlstr))
    fmt.Println(string(xmlstr))

}

运行输出结果

<?xml version="1.0" encoding="UTF-8"?>
 <requestAA type="xx">
   <htmlStr><a href='xx'/> </htmlStr>
   <Html>&lt;a  href=&#39;xxx.com&#39; /&gt;</Html>
   <htmlString>safari</htmlString>
   <clickurl>http://xxxx.com</clickurl>
   <urltype>link</urltype>
   <refresh>30</refresh>
   <scale>no</scale>
 </requestAA>

参考:

https://play.golang.org/p/z8JQjRdbV4

https://github.com/golang/go/issues/12963

package mai

import (
        "encoding/xml"
        "fmt"
)

type MyXML struct {
        XMLName xml.Name `xml:"item"`
        Content interface{} `xml:"content"`
}

func main() {
        x := MyXML{Content: struct{Value string `xml:",innerxml"`}{"test&abc"}}
        y, _ := xml.MarshalIndent(x, "", "  ")
        fmt.Println(string(y))
        fmt.Println("Hello, playground")
}