【发布时间】:2019-08-22 23:47:40
【问题描述】:
无法将 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子元素一样。