我正在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为此创建了一个Pause标签,以使其暂停一秒钟。 所以我想要的是生成一个像这样的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"`
}
答案 0 :(得分:0)
通过使用界面找到了解决方案
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"})