如何创建一个xml的CDATA节点去?

前端之家收集整理的这篇文章主要介绍了如何创建一个xml的CDATA节点去?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下结构体:
  1. type XMLProduct struct {
  2. XMLName xml.Name `xml:"row"`
  3. ProductId string `xml:"product_id"`
  4. ProductName string `xml:"product_name"`
  5. OriginalPrice string `xml:"original_price"`
  6. BargainPrice string `xml:"bargain_price"`
  7. TotalReviewCount int `xml:"total_review_count"`
  8. Averagescore float64 `xml:"average_score"`
  9. }

而且我使用encoding / xml进行编码,然后将其显示在网页上.

ProductName字段需要用<![CDATA []]括起来.但是如果我把它写成<![CDATA [p.ProductName]]>和>将被翻译成& lt;和& gt;

如何以最低的成本创建CDATA?

正如@Tomalak所说,不支持输出CDATA.

你可以写![CDATA [作为xml标签,稍后从结果xml替换结束标签.这会为你工作吗?它可能不是最低成本的,但最简单的.当然,您可以在下面的示例中使用Marshal调用来替换MarshalIndent调用.

http://play.golang.org/p/2-u7H85-wn

  1. package main
  2.  
  3. import (
  4. "encoding/xml"
  5. "fmt"
  6. "bytes"
  7. )
  8.  
  9. type XMLProduct struct {
  10. XMLName xml.Name `xml:"row"`
  11. ProductId string `xml:"product_id"`
  12. ProductName string `xml:"![CDATA["`
  13. OriginalPrice string `xml:"original_price"`
  14. BargainPrice string `xml:"bargain_price"`
  15. TotalReviewCount int `xml:"total_review_count"`
  16. Averagescore float64 `xml:"average_score"`
  17. }
  18.  
  19. func main() {
  20. prod := XMLProduct{
  21. ProductId: "ProductId",ProductName: "ProductName",OriginalPrice: "OriginalPrice",BargainPrice: "BargainPrice",TotalReviewCount: 20,Averagescore: 2.1}
  22.  
  23. out,err := xml.MarshalIndent(prod," "," ")
  24. if err != nil {
  25. fmt.Printf("error: %v",err)
  26. return
  27. }
  28.  
  29. out = bytes.Replace(out,[]byte("<![CDATA[>"),[]byte("<![CDATA["),-1)
  30. out = bytes.Replace(out,[]byte("</![CDATA[>"),[]byte("]]>"),-1)
  31. fmt.Println(string(out))
  32. }

猜你在找的XML相关文章