首页 > 解决方案 > 使用属性解组 xml

问题描述

无法将 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,"<")


标签: xmlgo

解决方案


字母大小写很重要,因此元素module不会被解组到名为 的字段中Module,您需要添加正确的标签。此外,您需要将其嵌入ModuleFieldModule其中,以便将其字段提升Module,然后才能将它们解组。或者,您也可以删除ModuleField所有字段并将其移动到Module.

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


推荐阅读