如@Tomalak所述,不支持输出CDATA。
您可能可以写
![CDATA[为xml标记,以后再替换生成的xml中的结束标记。这对您有用吗?它可能不是成本最低但最简单的一种。当然,您可以在下面的示例中将MarshalIndent调用替换为Marshal调用。
http://play.golang.org/p/2-u7H85-wn
package mainimport ( "encoding/xml" "fmt" "bytes")type XMLProduct struct { XMLName xml.Name `xml:"row"` ProductId string `xml:"product_id"` ProductName string `xml:"![CDATA["` OriginalPrice string `xml:"original_price"` BargainPrice string `xml:"bargain_price"` TotalReviewCount int `xml:"total_review_count"` AverageScore float64 `xml:"average_score"`}func main() { prod := XMLProduct{ ProductId: "ProductId", ProductName: "ProductName", OriginalPrice: "OriginalPrice", BargainPrice: "BargainPrice", TotalReviewCount: 20, AverageScore: 2.1} out, err := xml.MarshalIndent(prod, " ", " ") if err != nil { fmt.Printf("error: %v", err) return } out = bytes.Replace(out, []byte("<![CDATA[>"), []byte("<![CDATA["), -1) out = bytes.Replace(out, []byte("</![CDATA[>"), []byte("]]>"), -1) fmt.Println(string(out))}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)