使用额外标签将结构编组为 xml

我正在 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"`

}


侃侃尔雅
浏览 98回答 1
1回答

慕莱坞森

找到了使用接口的解决方案type Say struct {&nbsp; &nbsp; XMLName xml.Name `xml:"Say"`&nbsp; &nbsp; Text string `xml:",chardata"`}type Response struct {&nbsp; &nbsp; XMLName xml.Name `xml:"Response"`&nbsp; &nbsp; Says []interface{}}缺少实际类型名称不会生成“Says”标签。var r Responser.Says = append(r.Says, Say { Text: "hello"})
打开App,查看更多内容
随时随地看视频慕课网APP