我有一个打印 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 关注
- 284 浏览
添加回答
举报
0/150
提交
取消