我正在 Go 中开发一个 twilio 电话服务器,并且有一些引用要生成的 xml 的结构。例如:type Say struct { XMLName xml.Name `xml:"Say"` Text string `xml:",chardata"`}type Response struct { XMLName xml.Name `xml:"Response"` Says []Say `xml:",omitempty"`}当 Says 数组填充两个包含“Something”和“Something else”的 Say 结构时,会生成:<Response> <Say>Something</Say> <Say>Something else</Say></Response>但在大声说出“某事”之后,就没有停顿,紧接着就出现了“其他事”。twilio 为此创建了一个暂停标签,让它暂停一秒钟。所以我想要的是生成这样的 xml:<Response> <Say>Something</Say> <Pause></Pause> <Say>Something else</Say> <Pause></Pause></Response>但这如何在 go 结构中表示呢?如何挤入额外的 Pause 标签作为 Say 标签的同级标签?type Say struct { XMLName xml.Name `xml:"Say"` Text string `xml:",chardata"` ???? Pause `xml:Pause,sibling?????`}type Response struct { XMLName xml.Name `xml:"Response"` Says []Say `xml:",omitempty"`}
1 回答
慕莱坞森
TA贡献1810条经验 获得超4个赞
找到了使用接口的解决方案
type Say struct {
XMLName xml.Name `xml:"Say"`
Text string `xml:",chardata"`
}
type Response struct {
XMLName xml.Name `xml:"Response"`
Says []interface{}
}
缺少实际类型名称不会生成“Says”标签。
var r Response
r.Says = append(r.Says, Say { Text: "hello"})
- 1 回答
- 0 关注
- 126 浏览
添加回答
举报
0/150
提交
取消