doufu5521 2019-04-01 18:28
浏览 4
已采纳

使用属性解组xml

Having trouble getting xml to unmarshal so I can access xml attributes. Not sure what I'm doing wrong at this point. It complies, but the struct doesn't appear to contain any data.

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

contents of 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条回答 默认 最新

  • dongranding3909 2019-04-01 18:46
    关注

    Letter case matters, so the element module will not be unmarshaled into a field called Module, you need to add the proper tag. Also you'll need to embed the ModuleField into Module so that its fields are promoted to Module and only then they will be unmarshaled. Or, alternatively, you can remove ModuleField and move all its fields into Module.

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?