我有一個打印 XML 代碼行的腳本,但我需要它來編寫一個新的 XML 文件,然后將 XML 代碼寫入文件而不是打印它。這是打印 XML 代碼的函數func processTopic(id string, properties map[string][]string) { fmt.Printf("<card entity=\"%s\">\n", id) fmt.Println(" <facts>") for k, v := range properties { for _,value := range v { fmt.Printf(" <fact property=\"%s\">%s</fact>\n", k, value) } } fmt.Println(" </facts>") fmt.Println("</card>")}如何讓它編寫一個 XML 文件,然后將代碼寫入該 XML 文件?
3 回答

吃雞游戲
TA貢獻1829條經驗 獲得超7個贊
雖然打印您的 XML 可能沒問題,但為什么不使用該encoding/xml包?使用您的 XML 結構:
type Card struct {
Entity string `xml:"entity,attr"`
Facts Facts
}
type Facts struct {
Fact []Fact
}
type Fact struct {
Property string `xml:"property,attr"`
Value string `xml:",innerxml"`
}
像這樣創建您的數據結構(在 play 上運行示例):
card := &Card{
Entity: "1234id",
Facts: Facts{[]Fact{
Fact{Property: "prop1", Value: "val1"},
Fact{Property: "prop2", Value: "val2"},
}},
}
現在您可以將結構編碼為 XML 并將其直接寫入io.Writer:
writer, err := os.Open("/tmp/tmp.xml")
encoder := xml.NewEncoder(writer)
err := encoder.Encode(data)
if err != nil { panic(err) }
- 3 回答
- 0 關注
- 308 瀏覽
添加回答
舉報
0/150
提交
取消