登录
首页 >  Golang >  Go问答

Go中如何解组包含多个项目的简单XML数据?

来源:stackoverflow

时间:2024-02-27 23:30:26 177浏览 收藏

你在学习Golang相关的知识吗?本文《Go中如何解组包含多个项目的简单XML数据?》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

我想从以下 xml 中获取人物 ([]people) 的一部分:


    
        John Doe
        18
    
    
        Jane Doe
        20
    

(所有其他类似问题都过于具体和冗长)


解决方案


您需要创建两个结构:

  • 一个代表
  • 一个用于重复记录

请查看代码中的注释:

package main

import (
    "encoding/xml"
    "fmt"
)

var sourcexml = []byte(`
    
        john doe
        18
    
    
        jane doe
        20
    
`)

// define a structure for each record
type person struct {
    name string `xml:"name"`
    age  int    `xml:"age"`
}

// there needs to be a single struct to unmarshal into
// file acts like that one root struct
type file struct {
    people []person `xml:"person"`
}

func main() {
    // initialize an empty struct
    var file file

    err := xml.unmarshal(sourcexml, &file)
    if err != nil {
        fmt.println(err)
    }
    // file.people returns only the []person rather than the root
    // file struct with it's contents
    fmt.printf("%+v", file.people)
}
// output:
// [{name:john doe age:18} {name:jane doe age:20}]

编辑。 kaedys 表示 file 和 person 结构也可以嵌套(使用匿名结构),如下所示:

type File struct {
    People []struct {
        Name string `xml:"name"`
        Age  int    `xml:"age"`
    } `xml:"person"`
}

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

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