gpt4 book ai didi

xml - 在 Go 中将通用 csv 转换为 xml

转载 作者:数据小太阳 更新时间:2023-10-29 03:07:41 28 4
gpt4 key购买 nike

我正在尝试将通用 csv 文件转换为 xml 文件。 csv 文件有一个标题行。表 header value 代表元素名称,各列中的值是对应的元素值。

到目前为止我的方法:

// Read the csv file
file, 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 values
header := lines[0]
// Write the xml file
fileOut, 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 文件?

最佳答案

有两种解决方法: 您可以将数据反射(reflect)到结构中,只有当您可以获得结构、字段和标签时。然后通过 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)

关于xml - 在 Go 中将通用 csv 转换为 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21184333/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com