繁体   English   中英

如何在 Go 中使用多个项目解组简单的 xml?

How to Unmarshal simple xml with multiple items in Go?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

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

<file>
    <person>
        <name>John Doe</name>
        <age>18</age>
    </person>
    <person>
        <name>Jane Doe</name>
        <age>20</age>
    </person>
</file>

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

1 个回复

您需要创建两个结构:

  • 一个代表<file> </file>
  • 一个用于重复记录<person> </person>

请看代码中的注释:

package main

import (
    "encoding/xml"
    "fmt"
)

var sourceXML = []byte(`<file>
    <person>
        <name>John Doe</name>
        <age>18</age>
    </person>
    <person>
        <name>Jane Doe</name>
        <age>20</age>
    </person>
</file>`)

// 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"`
}
1 解组多个XML项

我试图解组具有相同结构的节点中包含的多个项目,以进行进一步处理,但似乎无法访问数据,我不确定为什么。 XML数据的结构形式如下(我正在尝试访问所有Item : &lt;?xml version="1.0" encoding="ISO-8859-1" ?&gt; &lt;datainfo&g ...

2016-01-10 23:26:54 1 541   xml/ go
2 如何解组Go XML?

我有xml数据可解组为字符串切片[“ 13.64.196.27/32”,“ 13.64.198.19/32”],但在开始时却出现错误“ undefined:Product ”。 我定义了产品结构...不确定要从我这里得到什么。 见下文和play.golang.org/p/Ak6bx3BLwq ...

4 如何在Go中解组xml枚举属性?

我想将xml属性解析为iota枚举类型(int)。 您可以在下面看到我尝试过的方法,但是由于不能使用枚举变量的地址,因此无法正常工作。 还有其他方法可以使UnmarshalXMLAttr与int类型一起使用吗? 更新:我知道可以通过将UnmarshalXML方法添加到Tag来 ...

5 如何在Go中解组包含脏HTML的XML

我有一些要解组的XML,但它在我什至不关心的字段中包含脏HTML。 我在这里发布了一个示例: http : //play.golang.org/p/caKCAYyXX2 有没有办法让我告诉解码器跳过或忽略这些错误? 我尝试制作文档中所述的非严格解码器,但无法获得AutoClose或En ...

6 Go-如何使用切片将XML解组到容器结构中

我有一个XML结构,从本质上讲,它包含一个节点数组,这些节点应反序列化为一个简单的go结构的一部分,但是它不起作用。 这是我正在使用的代码(注释显示了我的期望): 为什么这不起作用? 游乐场: http : //play.golang.org/p/a_d-nhcfoP ...

2014-01-14 22:38:51 1 499   xml/ go
7 将XML解组为struct

我有这个xml文件,我似乎无法将任何数据解组到结构中。 有人可以在这里帮助我。 它只是我以前从未使用过xml,而在xml之前总是更喜欢json。 刚刚用我的代码编辑了这篇文章,它仍然给我空的结构值 ...

2014-10-13 08:21:07 2 529   xml/ go
8 使用Go解组嵌套XML

我有下面的代码片段,我一直在努力地努力使之工作。 我到处都在寻找解决方案,但我发现没有一个似乎可行。 看来xml.Unmarshal命令的映射存在问题,因为它与嵌套字段有关。 下面的代码用于检索第一个值(称为unit ,它位于xml代码的顶层。 其他两个字段为零,它们嵌套在两个级 ...

9 使用属性解组xml

无法将xml解组,因此我可以访问xml属性。 不知道我现在在做什么错。 它符合,但该结构似乎不包含任何数据。 xml的内容: ...

2019-04-01 18:28:43 1 246   xml/ go
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM