gpt4 book ai didi

xml - 将 XML 解码为嵌入式结构

转载 作者:数据小太阳 更新时间:2023-10-29 03:13:19 26 4
gpt4 key购买 nike

我有一个平面 XML 结构,我想将其解码为一个嵌入了一部分的结构。这可能吗?语法是什么,或者我可以编写什么自定义方法?

在这个例子中,我用一个猜测来标记嵌套结构:xml:"",它被“encoding/xml”跳过。

type FloatHolder struct {
Value float32 `xml:"value"`
}


type pv struct {
XMLName xml.Name `xml:"series"`
Test1 FloatHolder `xml:""` // does not populate :-(
Test2 FloatHolder `xml:"nested"` // populates
}
func main() {
contents := `<series>
<nested>
<value>1234</value>
</nested>
<value>1234</value>
</series>`

m := &pv{}

err := xml.Unmarshal([]byte(contents), &m)
if err != nil {
panic(err)
}
fmt.Printf("%f %f\n", m.Test1.Value, m.Test2.Value)
}

输出:“0.000000 1234.000000”

Playground :https://play.golang.org/p/aEdDLFYqL5

谢谢!

最佳答案

编辑:评论互动后。

是的,你可以。假设

XML:

<series>
<value>123456</value>
</series>

结构定义:

type FloatHolder struct {
Value float32 `xml:",chardata"`
}

type pv struct {
XMLName xml.Name `xml:"series"`
Test2 FloatHolder `xml:"value"`
}

Go Playground 链接:https://play.golang.org/p/9sWQaw0HlS


实际上,根据您的 XML,它不是嵌套字段。它属于系列元素。

将您的结构更新为以下内容:

type pv struct {
XMLName xml.Name `xml:"series"`
Test1 float32 `xml:"value"`
Test2 FloatHolder `xml:"nested"`
}

Go Playground 链接:https://play.golang.org/p/-mWrUMJXxX

关于xml - 将 XML 解码为嵌入式结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44960183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com