在golang中,有时候需要生成带CDATA标识的xml值,例如这种:

<?xml version="1.0"?>
<xml>
    <to_User>
        <![CDATA[userId]]>
    </to_User>
</xml>

生成的代码如下:

package main

import (
 
	"encoding/xml"
	
	"log"
 
)
 
func main() {
	type CDATA struct {
		Text string `xml:",cdata"`
	}
 
	type TextMsg struct {
		XMLName    xml.Name `xml:"xml"`
		ToUserName CDATA    `xml:"to_User"`
	}
 
	msg := TextMsg{
		ToUserName: CDATA{"userId"},
	}
 
	xmlStr, err := xml.Marshal(msg)
	if err != nil {
		log.Printf("generate xml err:%s, xml param:%+v", err, msg)
	}
	log.Printf("%s, ", xmlStr)
}