使用属性解组xml

时间:2019-04-01 18:28:44

标签: xml go

在无法解组xml时遇到了麻烦,因此我可以访问xml属性。不知道我现在在做什么错。它符合要求,但该结构似乎不包含任何数据。

import (
    "io/ioutil"
    "encoding/xml"
    "fmt"
)

xml的内容:

  <module id="Core" description="Core Module" tenantId="tenant1" major="3" minor="4" patch="0" build="0">
    <probePath path="bin" />
  </module>
</metadata>
type ModuleField struct {
    Id string `xml:"id,attr"`
    Description string `xml:"description,attr"`
    TenantId string `xml:"tenantId,attr"`
    Major string `xml:"major,attr"`
    Minor string `xml:"minor,attr"`
    Patch string `xml:"patch,attr"`
}

type Module struct {
    ModuleField ModuleField
    ProbePath string `xml:"probePath"`
}

type Metadata struct {
    XMLName xml.Name `xml:"metadata"`
    Module Module
}

// read xml file
    raw, _ := ioutil.ReadFile(XMLLoc)
    if err != nil {
        return
    }


    var XMLData Metadata 
    xml.Unmarshal(raw, &XMLData)

    // nothing is being printed
    fmt.Println(">",XMLData.Module.ModuleField.TenantId,"<")


1 个答案:

答案 0 :(得分:1)

大小写比较重要,因此元素module不会被编组到名为Module的字段中,您需要添加适当的标记。另外,您还需要将ModuleField嵌入Module中,以便将其字段提升Module,然后才将它们编组。或者,您也可以删除ModuleField并将其所有字段移至Module

https://play.golang.org/p/AvaEpcKY-oh