doudongdang4483 2016-06-20 14:39
浏览 34
已采纳

转到xml列表中的注释

I would like to do something like:

    <members>
        <!-- It's a first group -->
        <member>Whatever</member>
        ...
        <member>whatever</member>
        <!-- It's a second group -->
        <member>Whatever</member>
        ...
        <member>whatever</member>
    </members>

Is there any way to do this with golang?

  • 写回答

1条回答 默认 最新

  • dthdlv9777 2016-06-20 16:35
    关注

    You can do it in two ways. Firstly, you can make comment a part of a larger struct that embeds members and make it marshal a comment every time a member is marshalled:

    type Members struct {
        XMLName xml.Name `xml:"members"`
        Members []CommentedMember
    }
    
    type CommentedMember struct {
        Member
        comment xml.Comment
    }
    
    func (cm CommentedMember) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
        if cm.comment != nil {
            err := e.EncodeToken(cm.comment)
            if err != nil {
                return err
            }
        }
        return e.Encode(cm.Member)
    }
    
    type Member struct {
        XMLName xml.Name `xml:"member"`
    }
    

    The second way is to create a separate Comment type and make your Members struct contain different types:

    type Members2 struct {
        XMLName xml.Name `xml:"members"`
        Members []interface{}
    }
    
    type Comment string
    
    func (cm Comment) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
        if cm != "" {
            return e.EncodeToken(xml.Comment(cm))
        }
        return nil
    }
    
    type Member struct {
        XMLName xml.Name `xml:"member"`
    }
    

    Here are both on the playground: https://play.golang.org/p/3n-xH1Zc-n.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 ADS生成的微带线为什么是蓝色空心的
  • ¥15 求一下解题思路,完全不懂
  • ¥15 tensorflow
  • ¥15 densenet网络结构中,特征以cat方式复用后是怎么进行误差回传的
  • ¥15 STM32G471芯片spi设置了8位,总是发送16位
  • ¥15 R语言并行计算beta-NTI中tree文件的类型
  • ¥15 如何解读marsbar导出的ROI数据?
  • ¥20 求友友协助弄一下基于STC89C52单片机的声光控制灯原理图
  • ¥15 arduino双向交通灯设计
  • ¥15 有没有会粒子群算法的大能(○゜ε^○)求带不会出收敛图😭