为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
喵喵时光机 2021-06-29 13:04:11
我有一个打印 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) }


查看完整回答
反对 回复 2021-07-05
  • 3 回答
  • 0 关注
  • 284 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信