私は、XMLを使用してジオメトリを記述するCollada形式のファイルを生成するプログラムを作成することでGoを学習しています。
構造体に注釈を付けると、配列を1つの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"アノテーションを使用して配列を自分で置き換えます。