首页 > 解决方案 > Golang xml unmarshal:如果我们在嵌套结构中使用 Xml 名称元素,则只有根元素会被解组

问题描述

我们有一个如下所示的 Xml

<Test>
        <Test1>
            <Data>999</Data>
        </Test1>
</Test>

用于解组的 Go 结构如下所示

type Root struct{
    XMLName xml.Name
    ChildElem Child
}
type Child struct{
   XMLName xml.Name 
   Data string `xml:"Data"`
}

编组分配值的结构时,我们得到了如上所述的预期 xml。然而,在将上述 xml解组到 Root 结构中时,只有根元素标记被解析,而嵌套元素保持为空。这是预期的行为吗?

游乐场链接:https: //play.golang.org/p/uUPO0gBNCp8

标签: xmlgo

解决方案


试试这个:

type Root struct {
    XMLName   xml.Name
    ChildElem Child `xml:"Test1"`
}

如果您没有使用 XML 元素的名称指定结构标记,则 xml 包将为其使用变量名称,在您的情况下为“ChildElem”,这不是您想要的。


推荐阅读