我正在尝试将通用 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)
- 2 回答
- 0 关注
- 234 浏览
添加回答
举报
0/150
提交
取消