Golang中的多类型解码器

恩德拉

我有一个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解码器组合?

詹姆斯·亨斯特里奇

您可以通过定义符合xml.Unmarshaler接口的新类型来实现。因此,而不是做Lines一个[]string,申报一个新的类型用适当的UnmarshalXML方法。例如:

type Lines []string

func (l *Lines) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
    var content string
    if err := d.DecodeElement(&content, &start); err != nil {
        return err
    }
    *l = strings.Split(content, "\n")
    return nil
}

您可以在此处看到完整的示例:http : //play.golang.org/p/3SBu3bOGjR

如果您也想支持对该类型的编码,则可以MarshalXML以类似的方式实现该方法(构造所需的字符串内容并将其传递给编码器)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ARM Assembly中的Caesar解码器

来自分类Dev

解码器中的Apache Beam IOException

来自分类Dev

VLC中的熵解码器

来自分类Dev

自适应多速率 (AMR) 解码器

来自分类Dev

无法在HEVC解码器IMFTransform上设置输出类型

来自分类Dev

Android媒体编解码器无法实例化“视频/ MP4”类型的解码器

来自分类Dev

Tensorflow教程中的尺寸与解码器不匹配

来自分类Dev

如何在python中构建OneHot解码器

来自分类Dev

Tensorflow教程中的尺寸与解码器不匹配

来自分类Dev

DTS解码器位于FFmpeg中的什么位置?

来自分类Dev

在Fedora中安装MP3解码器插件

来自分类Dev

在 LSTM 解码器中启动令牌

来自分类Dev

Dart JSON解码器

来自分类Dev

Swift Morse解码器

来自分类Dev

Ruby Morse解码器

来自分类Dev

UnicodeDecodeError:'utf8'编解码器无法解码字典中的字节

来自分类Dev

解码器如何确定H264解码中单个NAL单元的大小

来自分类Dev

UnicodeDecodeError: 'ascii' 编解码器无法解码 Textranking 代码中的字节

来自分类Dev

如何使用解码器在给定的JSON中将Double类型的Codable属性转换为Date?

来自分类Dev

与Http4s一起使用circe时用于精制类型的解码器

来自分类Dev

通过编解码器或文件类型搜索Foobar库?

来自分类Dev

如何在 NPM 中正确使用编解码器类型

来自分类Dev

使用OpenCV readNetFromTensorFlow运行Keras DNN模型(UNet):错误:未知的图层类型op解码器中的图形Shape_stage0_upsampling / Shape

来自分类Dev

从Encog中的自动编码器抓取编码器/解码器

来自分类Dev

EmptyByteBuf出现在Netty服务器的解码器链中

来自分类Dev

了解Unicode编解码器

来自分类常见问题

ir定制编解码器

来自分类Dev

SIP编解码器协商

来自分类Dev

FFProbe获取编解码器

Related 相关文章

热门标签

归档