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

Golang marshal动态xml元素名称

发布时间:2020-12-16 19:20:57 所属栏目:大数据 来源:网络整理
导读:xml文件由两个元素组成.除了一个元素名称外,这些元素具有相同的结构.我试图为XMLName属性设置一个值,但这不起作用. XML: !-- first element --PERSON ELEM1.../ELEM1 ELEM2.../ELEM2 ELEM3.../ELEM3 ELEM4.../ELEM4/PERSON!-- second element --SENDER ELEM
xml文件由两个元素组成.除了一个元素名称外,这些元素具有相同的结构.我试图为XMLName属性设置一个值,但这不起作用.

XML:

<!-- first element -->
<PERSON>
  <ELEM1>...</ELEM1>
  <ELEM2>...</ELEM2>
  <ELEM3>...</ELEM3>
  <ELEM4>...</ELEM4>
</PERSON>


<!-- second element -->
<SENDER>
  <ELEM1>...</ELEM1>
  <ELEM2>...</ELEM2>
  <ELEM3>...</ELEM3>
  <ELEM4>...</ELEM4>
</SENDER>

是否可以定义一个结构,使元素名称是动态的?

type Person struct {
    XMLName string `xml:"???"` // How make this dynamic?
    e1 string `xml:"ELEM1"`
    e2 string `xml:"ELEM2"`
    e3 string `xml:"ELEM3"`
    e4 string `xml:"ELEM4"`
}
在 documentation中,它表示XMLName字段必须是xml.Name类型.
type Person struct {
    XMLName xml.Name
    E1 string `xml:"ELEM1"`
    // ...
}

通过xml.Name的Local字段设置元素名称:

person := Person { 
    XMLName: xml.Name { Local: "Person" },// ...
}

(此外,必须导出E1-E4才能包含在XML输出中).

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

(编辑:李大同)

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

    推荐文章
      热点阅读