加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 07:44:05 所属栏目:百科 来源:网络整理
导读:我有以下结构体: type XMLProduct struct { XMLName xml.Name `xml:"row"` ProductId string `xml:"product_id"` ProductName string `xml:"product_name"` OriginalPrice string `xml:"original_price"` BargainPrice string `xml:"bargain_price"` TotalR
我有以下结构体:
type XMLProduct struct {
    XMLName          xml.Name `xml:"row"`
    ProductId        string   `xml:"product_id"`
    ProductName      string   `xml:"product_name"`
    OriginalPrice    string   `xml:"original_price"`
    BargainPrice     string   `xml:"bargain_price"`
    TotalReviewCount int      `xml:"total_review_count"`
    AverageScore     float64  `xml:"average_score"`
}

而且我使用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

package main

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读