繁体   English   中英

使用 CDATA 和 GOLANG 解组 XML

[英]Unmarshal XML with CDATA with GOLANG

我试图解组一个 XML 文件,其中包含 CDATA 字段。 首先,我构建了一个结构 voor XML 文件。 下面是一个简短的视图。 A 在结构中添加了 chardata 标记。

type Ad struct {
    XMLName xml.Name                `xml:"ad"`
    Remark string                   `xml:"remark,chardata"`
}

但是当我执行 xml.Unmarshal 操作时,我得到了备注字符串。 只有它仍然包含字符串中的 <.[CDATA 和 ]]> 标记。

有没有一种很好的方法(不是strings.Replace)来删除这些标签?

您需要定义包含字符数据部分的字段,而标签中没有封闭的 XML 元素:

Remark string `xml:",chardata"`

您的代码可能需要如下所示:

type Ad struct {
    XMLName xml.Name `xml:"ad"`
    Remark struct {
        XMLName xml.Name `xml:"remark"`
        Value string `xml:",chardata"`
    }
}

func main() {
    in := "<ad><remark><![CDATA[some stuff]]></remark></ad>"
    var ad Ad
    xml.Unmarshal([]byte(in), &ad)
    fmt.Printf("remark: %s", ad.Remark.Value)
}

可以在这里测试: https://play.golang.org/p/40MNzbbjKAp

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM