Go语言使用struct生成XML时如何给带属性的节点设置文本值
解决方案
Go标准库的encoding/xml包提供了chardata结构标签,用来指定某个字段的值作为当前XML节点的文本内容输出,你只需要调整Item结构体的定义,再补充对应字段的赋值即可。
修改后完整代码
package main import ( "encoding/xml" "fmt" ) type Data struct { ItemA string `xml:"item-string"` ItemB Item } type Item struct { XMLName xml.Name `xml:"item-struct"` Type string `xml:"type,attr"` // 新增Content字段,用chardata标签标记为节点文本 Content string `xml:",chardata"` } func Test() { itm := Data{ ItemA: "good", ItemB: Item{ Type: "nice", // 给文本字段赋值 Content: "very good", }, } output, err := xml.MarshalIndent(&itm, "", " ") if err != nil { fmt.Println(err) } result := string(output) fmt.Printf("\n%s\n", result) } func main() { Test() }
运行输出效果
<Data> <item-string>good</item-string> <item-struct type="nice">very good</item-struct> </Data>
内容的提问来源于stack exchange,提问作者Rolas
相关产品推荐
相关产品推荐

