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

在 Go 中将通用 csv 转换为 xml

在 Go 中将通用 csv 转换为 xml

Go
aluckdog 2021-07-12 16:12:35
我正在尝试将通用 csv 文件转换为 xml 文件。csv 文件有一个标题行。标题值表示元素名称,相应列中的值是对应的元素值。到目前为止我的方法:// Read the csv filefile, err := os.Open(*i)if err != nil {  log.Fatalf("Error opening input file: %v\n", err)}defer file.Close()r := csv.NewReader(file)r.Comma, _ = utf8.DecodeRuneInString(*s)lines, err := r.ReadAll()// header valuesheader := lines[0]// Write the xml filefileOut, err := os.Create(*o)if err != nil {  log.Fatalf("Error opening input file: %v\n", err)}defer fileOut.Close()for _, l := range lines {  for i, elem := range l {    // TODO: Something here is missing...    xml.EscapeText(fileOut, []byte(header[i]))    xml.EscapeText(fileOut, []byte(elem))  }问题:如何使它成为 xml 写入部分的最后一部分?或者是否有更有效的方法将 csv 文件转换为 xml 文件?
查看完整描述

2 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

有两种解决方案:您可以将数据反映到结构中,只有当您可以获得结构,字段和标签时。然后通过 xml 包中的方法输出 XML。但是,如果你不知道我面临的结构。有一个愚蠢但简单的方法,写成字符串,作为打击:


data := XML_HEADER

data = data + "<records>\n"

for i := 2; i < len(records); i++ {

 data = data + "  <record "

  for j := 0; j < len(records[i]); j++  {

   data = data + head[j] + `="` + records[i][j] + `" `

                                        }

 data = data + "/>\n"              }

 data = data + "</records>"

 ioutil.WriteFile(xmlFileName, []byte(data), 0644)


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

添加回答

举报

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