我有一个 XML 文档。某些字段具有自定义格式。例子:<document> <title>hello world</title> <lines> line 1 line 2 line 3 </lines></document>我想将它导入到结构中,如:type Document struct { Title string `xml:"title"` Lines []string `xml:"lines"`}有什么方法可以实现自定义解码器,它将行字符串拆分为行数组 ( ["line 1", "line 2", "line 3"])?可以将 Lines 字段设为字符串类型并在 xml 导入后进行拆分,但这似乎不是一个非常优雅的解决方案。有什么方法可以定义用于行拆分的自定义解码器并将其与 xml 解码器结合使用?
2 回答
慕丝7291255
TA贡献1859条经验 获得超6个赞
以下是 CSE 建议的详细示例:
type Document struct {
Title string `xml:"title"`
LineData string `xml:"lines"`
}
func (d *Document)Lines() []string {
return strings.Split(d.LineData, '\n')
}
这类似于net/http Request所做的:将数据读入一个结构体,然后提供访问器来解释该结构体。
如果您真的不想这样做,那么我使用的另一种方法是创建两个结构体。将原始数据读入第一个,然后使用它来构建第二个。
如果您打算将其作为 JSON 或其他一些有线格式发送出去,则第二个结构可能只是一个映射。
func (d *Document) Map() map[string]interface{} {
m := make(map[string]interface{})
m["lines"] = strings.Split(d.LineData, '\n')
m["title"] = d.Title
return m
}
- 2 回答
- 0 关注
- 239 浏览
添加回答
举报
0/150
提交
取消