xml - 使用属性解组 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,"<")
解决方案
字母大小写很重要,因此元素module
不会被解组到名为 的字段中Module
,您需要添加正确的标签。此外,您需要将其嵌入ModuleField
到Module
其中,以便将其字段提升到Module
,然后才能将它们解组。或者,您也可以删除ModuleField
所有字段并将其移动到Module
.
推荐阅读
- c++ - 为什么使用implicit_cast
(int) 而不是 static_cast (整数)? - python - Collatz 在 Python 中的假设检验
- bash - 分组命令的意外标记附近的bash语法错误
- mysql - 如何将 MySQL Workbench 连接到在 VPC 中运行的 Amazon RDS
- sql - 在 Hive SQL 中检索多个链表
- stripe-payments - 带有多个 webhook 的条带
- postgresql - SOCI/Postgresql 中的批量插入顺序
- javascript - 如何使用 JavaScript/TypeScript 将字符串转换为数组
- excel - 根据另一个单元格值更改单元格范围
- terraform - 从 terraform 云中获取变量