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")
}

  

posted on 2017-03-30 15:35  iokde.com  阅读(1994)  评论(0编辑  收藏  举报

导航