登录
首页 >  Golang >  Go问答

提取多个字段的XML数据的golang实现

来源:stackoverflow

时间:2024-03-13 09:24:27 385浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《提取多个字段的XML数据的golang实现》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

给定以下 xml 文件:




  
    hyena
  
  
    lion
    
  
  
    zebra
  

在 golang 中生成以下输出的最简单方法是什么?

1,hyena
2,lion,https://en.wikipedia.org/wiki/File:Lion_waiting_in_Namibia.jpg
3,zebra

解决方案


通常,在 stack overflow 上发布问题之前,您至少应该尝试一下,但由于这是您的第一篇文章,我不想表现得粗鲁,所以这里有一个完整的答案。

使用 the standard xml library 您可以轻松完成此操作。

以下是您所描述的行为的示例:

package main

import (
    "encoding/xml"
    "fmt"
    "log"
)

type zoo struct {
    xmlname xml.name `xml:"zoo"`

    animals []animal `xml:"animal"`
}

type animal struct {
    xmlname xml.name `xml:"animal"`
    id      uint     `xml:"id,attr"`

    displayname displayname
    icon        icon
}

type displayname struct {
    xmlname xml.name `xml:"display-name"`
    value   string   `xml:",chardata"`
}

type icon struct {
    xmlname xml.name `xml:"icon"`
    source  string   `xml:"src,attr"`
}

var data []byte = []byte(`

  
    hyena
  
  
    lion
    
  
  
    zebra
  
`)

func main() {
    var zoo zoo
    if err := xml.unmarshal(data, &zoo); err != nil {
        log.fatal(err)
    }
    for _, animal := range zoo.animals {
        fmt.printf("%d,%s,%s\n", animal.id, animal.displayname.value, animal.icon.source)
    }
}

输出

1,hyena,
2,lion,https://en.wikipedia.org/wiki/File:Lion_waiting_in_Namibia.jpg
3,zebra,

您可以在Golang Playground上尝试一下

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>