小编典典

Golang元帅动态XML元素名称

go

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"`
}

阅读 345

收藏
2020-07-02

共1个答案

小编典典

文档中,该XMLName字段必须为类型xml.Name

type Person struct {
    XMLName xml.Name
    E1 string `xml:"ELEM1"`
    // ...
}

通过以下Local字段设置元素名称xml.Name

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

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

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

2020-07-02