在 Go 中将 XML 代码写入 XML 文件

我有一个打印 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 文件?


喵喵时光机
浏览 285回答 3
3回答

吃鸡游戏

虽然打印您的 XML 可能没问题,但为什么不使用该encoding/xml包?使用您的 XML 结构:type Card struct {&nbsp; &nbsp; Entity string `xml:"entity,attr"`&nbsp; &nbsp; Facts&nbsp; Facts}type Facts struct {&nbsp; &nbsp; Fact []Fact}type Fact struct {&nbsp; &nbsp; Property string `xml:"property,attr"`&nbsp; &nbsp; Value string `xml:",innerxml"`}像这样创建您的数据结构(在 play 上运行示例):card := &Card{&nbsp; &nbsp; Entity: "1234id",&nbsp; &nbsp; Facts: Facts{[]Fact{&nbsp; &nbsp; &nbsp; &nbsp; Fact{Property: "prop1", Value: "val1"},&nbsp; &nbsp; &nbsp; &nbsp; Fact{Property: "prop2", Value: "val2"},&nbsp; &nbsp; }},}现在您可以将结构编码为 XML 并将其直接写入io.Writer:writer, err := os.Open("/tmp/tmp.xml")encoder := xml.NewEncoder(writer)err := encoder.Encode(data)if err != nil { panic(err) }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go