哈喽!今天心血来潮给大家带来了《使用属性解组 xml》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习Golang,千万别错过这篇文章~希望能帮助到你!
问题内容在解组 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,"<")
解决方案
字母大小写很重要,因此元素 Module
不会被解组到名为 Module
的字段中,您需要添加正确的标记。此外,您还需要将 ModuleField
嵌入到 Module
中,以便将其字段提升为 Module
,然后才对它们进行解组。或者,您也可以删除 ModuleField
并将其所有字段移至 Module
。
https://play.golang.org/p/AvaEpcKY-oh
以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持编程网!更多关于Golang的相关知识,也可关注编程网公众号。