我正在通过编写一个以Collada格式生成文件的程序来学习Go,该程序使用XML描述几何。
您可以对结构进行注释,几乎所有的工作都可以按预期的方式进行,但我无法弄清楚如何将数组编组为一个XML元素-我总是最终生成N个元素。
换句话说,我想
<input>
<p>0 1 2</p>
</input>
代替
<input>
<p>0</p>
<p>1</p>
<p>2</p>
</input>
代码如下
package main
import (
"encoding/xml"
"os"
)
func main() {
type Vert struct {
XMLName xml.Name `xml:"input"`
Indices []int `xml:"p"`
}
v := &Vert{Indices:[]int{0, 1, 2}}
output, err := xml.MarshalIndent(v, "", " ")
if err == nil {
os.Stdout.Write(output)
}
}
来自encoding / xml / marshal.go的各种注释(和代码)似乎暗示我不走运:
//元数据通过将每个元素编组来处理数组或切片。
//切片和数组遍历元素。它们没有封闭标签。
奇怪的是,如果我将数组类型更改为uint8,则根本不会将数组编组。
如果我不走运,我可能会使用xml:“,innerxml”注释自己替换数组。
凤凰求蛊
相关分类