加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何将混合元素的xml序列映射到go结构?

发布时间:2020-12-16 05:34:35 所属栏目:百科 来源:网络整理
导读:我试图加载一个包含无限混合元素序列的 XML文件(在XSD中的序列中选择) 该文件看起来像这样: RootNode ElementB.../ElementB ElementA.../ElementA ElementA.../ElementA ElementC.../ElementC ElementB.../ElementB ElementA.../ElementA ElementB.../Eleme
我试图加载一个包含无限混合元素序列的 XML文件(在XSD中的序列中选择)
该文件看起来像这样:
<RootNode>
    <ElementB>...</ElementB>
    <ElementA>...</ElementA>
    <ElementA>...</ElementA>
    <ElementC>...</ElementC>
    <ElementB>...</ElementB>
    <ElementA>...</ElementA>
    <ElementB>...</ElementB>
</RootNode>

我使用xml.Unmarshal初始化并填充这些结构:

type RootNode struct {
    ElementA []ElementA
    ElementB []ElementB
    ElementC []ElementC
}

type ElementA struct {
}

type ElementB struct {
}

type ElementC struct {
}

我在这里工作的例子是http://play.golang.org/p/ajIReJS35F.
问题是我需要知道原始序列中元素的索引.通过该描述,此信息将丢失.

有没有办法在同一个数组中加载ElementA,ElementB或ElementC类型的元素?更一般地说,将混合元素列表映射到go结构的最佳方法是什么?

您可以在根节点上使用xml:“,any”标记,然后将其余标记解组为具有XMLName字段的结构,如下所示:
type RootNode struct {
    Elements []Element `xml:",any"`
}

type Element struct {
    XMLName xml.Name
}

更多关于xml:“,any”和XMLName here.

游乐场示例:http://play.golang.org/p/Vl9YI8GG1E

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读