在无法解组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,"<")
答案 0 :(得分:1)
大小写比较重要,因此元素module
不会被编组到名为Module
的字段中,您需要添加适当的标记。另外,您还需要将ModuleField
嵌入Module
中,以便将其字段提升到Module
,然后才将它们编组。或者,您也可以删除ModuleField
并将其所有字段移至Module
。