我有以下结构:
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 + ]]>
,则<
和>
将转换为<
和>
。
如何CDATA
以最低的成本创建?
如@Tomalak所述,不支持输出CDATA。
您可能可以写![CDATA[
为xml标记,以后再替换生成的xml中的结束标记。这对您有用吗?它可能不是成本最低但最简单的一种。当然,您可以在下面的示例中将MarshalIndent调用替换为Marshal调用。
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))
}
主要内容:PCDATA - 被解析的字符数据,CDATA - (未解析)字符数据XML 文档中的所有文本均会被解析器解析。 只有 CDATA 区段中的文本会被解析器忽略。 PCDATA - 被解析的字符数据 XML 解析器通常会解析 XML 文档中所有的文本。 当某个 XML 元素被解析时,其标签之间的文本也会被解析: <message> This text is also parsed</message> 解析器之所以这么做是因为 XML 元素可包含其他元素,就像这个实例中
在本章中,我们将讨论如何使用文档对象的几种方法来创建新节点。 这些方法提供了创建新元素节点,文本节点,注释节点,CDATA节节点和属性节点的范围。 如果新创建的节点已存在于元素对象中,则将其替换为新节点。 下面将通过示例演示这些操作。 1. 创建新的Element节点 方法创建一个新的元素节点。 如果元素对象中存在新创建的元素节点,则将其替换为新元素节点。 语法 使用方法的语法如下 - 其中, -
问题内容: 目前,我正在用Java创建XML文件,并通过使用XSL / XSLT进行转换将其显示在JSP页面中。现在,我需要获取该XML文件并在PDF中显示相同的信息。有什么办法可以通过使用某种XSL文件来做到这一点? 我已经看过iText Java-PDF库,但是找不到任何将其用于XML和样式表的方法。 任何帮助将不胜感激。提前致谢! 问题答案: 您可以使用XSL格式对象。这里有一些很好的文章,
本文向大家介绍xml CDATA部分,包括了xml CDATA部分的使用技巧和注意事项,需要的朋友参考一下 示例 包含特殊字符的文本的较长部分可以使用CDATA节进行转义。CDATA节只能出现在元素内容中。 CDATA节不能包含序列,]]>因为它结束了它。
我得到xml格式的响应,数据在xml节点的cData部分内。现在当我试图提取节点值,然后用cdata文本获取值。 我如何解析它? xml: 我使用代码来获取整个列表,但我只需要获取特定的节点 上面的代码列出了所有的cdata值... 我只需要从上面的xml中获取dbid、isdb、mydb值
我有一个这样的xml: 我正在使用simplexml_load_string将其解析为SimpleXmlElement。然后我像这样得到我的节点 我需要处理简单的超文本标记语言,例如: