使用GOLANG使用CDATA解组XML
我正在尝试解组一个包含CDATA字段的XML文件。首先,我构建一个结构体或XML文件。下面是一个简短的视图。A已在结构中添加了chardata标记使用GOLANG使用CDATA解组XML,xml,go,unmarshalling,Xml,Go,Unmarshalling,我正在尝试解组一个包含CDATA字段的XML文件。首先,我构建一个结构体或XML文件。下面是一个简短的视图。A已在结构中添加了chardata标记 type Ad struct { XMLName xml.Name `xml:"ad"` Remark string `xml:"remark,chardata"` } 但是当我执行xml.Unmarshal操作时,我得到了注释
type Ad struct {
XMLName xml.Name `xml:"ad"`
Remark string `xml:"remark,chardata"`
}
但是当我执行xml.Unmarshal操作时,我得到了注释字符串。只有它仍然包含字符串中的标记
是否有一种很好的方法(不是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)
}
类型Ad结构{
XMLName xml.Name`xml:“ad”`
备注结构{
XMLName xml.Name`xml:“备注”`
值字符串`xml:,chardata“`
}
}
func main(){
在:="当您删除chardata选项时会发生什么情况?我希望解析器在没有任何提示的情况下处理该选项。我得到了完全相同的结果。因此CDATA标记仍然在字符串中。您好,您能否发布一个完整的示例来演示该问题?感谢您的评论,我尝试了,但CDATA仍然在字符串中。您是否获得了CDATA字符串运行我的示例?我运行了它并验证了它不存在。如果您在代码库中工作时仍然存在问题,那么查看一个XML示例会很有趣。您可以将它添加到您的问题中吗?