如何在 Go 中将多行编组为 XML?
How to marshal multiline to XML in Go?
我需要将坐标存储到 KML 文件中。应该是这样的:
<coordinates>
51.600223,25.003058,0
51.600223,25.003065,0
51.600213,25.003065,0
51.600212,25.003065,0
51.600217,25.003075,0
</coordinates>
如果我加入字符串并尝试将其编组为一个字符串,我会为每一行得到 

KmlLineString struct {
Coordinates string `xml:"coordinates"`
}
如果我将其更改为 Coordinates []string`xml:"coordinates"`
,我会在每一行上添加标签。
我该怎么做?
正如@icza 在他的评论中指出的那样,

是一个转义的新行,并且是编组 XML 时的正确输出。任何有效的 XML 解码器都能够解组它并理解它代表什么。
如果你想输出文字换行,也许是为了让 XML 更人性化,那么你可以使用 ,innerxml
标签选项。此选项指示编码器逐字编组内容。但是,正如@icza 在另一条评论中指出的那样,如果用 ,innerxml
标记的字段包含无效的 XML,则对此类字段进行编组的结果也将是无效的 XML.
例如:
var xml_data = `<coordinates>
51.600223,25.003058,0
51.600223,25.003065,0
51.600213,25.003065,0
51.600212,25.003065,0
51.600217,25.003075,0
</coordinates>`
type KmlLineString struct {
Coordinates string `xml:",innerxml"`
}
https://go.dev/play/p/kXOjZZ-DyHc
或者
var xml_data = `
51.600223,25.003058,0
51.600223,25.003065,0
51.600213,25.003065,0
51.600212,25.003065,0
51.600217,25.003075,0
`
type KmlLineString struct {
Coordinates Coordinates `xml:"coordinates"`
}
type Coordinates struct {
Value string `xml:",innerxml"`
}
我需要将坐标存储到 KML 文件中。应该是这样的:
<coordinates>
51.600223,25.003058,0
51.600223,25.003065,0
51.600213,25.003065,0
51.600212,25.003065,0
51.600217,25.003075,0
</coordinates>
如果我加入字符串并尝试将其编组为一个字符串,我会为每一行得到 

KmlLineString struct {
Coordinates string `xml:"coordinates"`
}
如果我将其更改为 Coordinates []string`xml:"coordinates"`
,我会在每一行上添加标签。
我该怎么做?
正如@icza 在他的评论中指出的那样,

是一个转义的新行,并且是编组 XML 时的正确输出。任何有效的 XML 解码器都能够解组它并理解它代表什么。
如果你想输出文字换行,也许是为了让 XML 更人性化,那么你可以使用 ,innerxml
标签选项。此选项指示编码器逐字编组内容。但是,正如@icza 在另一条评论中指出的那样,如果用 ,innerxml
标记的字段包含无效的 XML,则对此类字段进行编组的结果也将是无效的 XML.
例如:
var xml_data = `<coordinates>
51.600223,25.003058,0
51.600223,25.003065,0
51.600213,25.003065,0
51.600212,25.003065,0
51.600217,25.003075,0
</coordinates>`
type KmlLineString struct {
Coordinates string `xml:",innerxml"`
}
https://go.dev/play/p/kXOjZZ-DyHc
或者
var xml_data = `
51.600223,25.003058,0
51.600223,25.003065,0
51.600213,25.003065,0
51.600212,25.003065,0
51.600217,25.003075,0
`
type KmlLineString struct {
Coordinates Coordinates `xml:"coordinates"`
}
type Coordinates struct {
Value string `xml:",innerxml"`
}