一个简单的xml元素如何解组到golang结构?

假设以下xml元素具有属性和浮点值:

<thing prop="1">

1.23

</thing>

<thing prop="2">

4.56

</thing>

为了解组它,我应该如何定义我的结构?

type ThingElem struct {

Prop int `xml:"prop,attr"`

Value float // ???

}

type ThingWrapper struct {

T ThingElem `xml:"thing"`

}

// VS

type ThingElem struct {

XMLName xml.Name `xml:"thing"` // Do I even need this?

Prop int `xml:"prop,attr"`

Value float // ???

}

XMLName属性的用法使我感到困惑。什么时候应该将其放置在结构中,何时将其作为标签包装?

回答:

在下面,您可以找到解组给定数据的代码。

  1. 在删除空格之前,无法正确解组浮点值。
  2. 可以使用“,chardata”注释引用标记的内容。
  3. 您无需xml.Name在结构中指定字段,只要它不模糊应使用哪种结构即可。


package main

import (

"encoding/xml"

"fmt"

)

type Root struct {

Things []Thing `xml:"thing"`

}

type Thing struct {

Prop int `xml:"prop,attr"`

Value float64 `xml:",chardata"`

}

func main() {

data := `

<root>

<thing prop="1">1.23</thing>

<thing prop="2">4.56</thing>

</root>

`

thing := &Root{}

err := xml.Unmarshal([]byte(data), thing)

if err != nil {

fmt.Println(err)

return

}

fmt.Println(thing)

}

以上是 一个简单的xml元素如何解组到golang结构? 的全部内容, 来源链接: utcz.com/qa/397424.html

回到顶部