gpt4 book ai didi

xml - 转到 : Unmarshall XML List containing different entities

转载 作者:IT王子 更新时间:2023-10-29 01:42:17 26 4
gpt4 key购买 nike

我得到了以下 XML 结构

<properties>
<property name="element1">data1</property>
<property name="element2">data2</property>
<datetime name="start">13 Jan 2015 14:13:15GMT</datetime>
<property name="element3">data3</property>
<property name="element4">data4</property>
<property name="element5">data5</property>
<categorisation name="category">cat1</categorisation>
<property name="element6">data6</property>
<property name="element7">data7</property>
</properties>

我想将其解码为以下内容:

type Property string {
Name string
Value string
}

type Properties struct {
Props []Property
DateTime time.Time
Category string
}

但是不知道如何处理乱序的Properties

最佳答案

encoding/xml 包为你处理。你只需要正确地标记你的结构字段来告诉xml打包它们是如何在 XML 源中找到的:

type Property struct {
Name string `xml:"name,attr"`
Value string `xml:",cdata"`
}

type Properties struct {
Props []Property `xml:"property"`
DateTime string `xml:"datetime"`
Category string `xml:"categorisation"`
}

请注意,我更改了 DateTime 的类型字段到 string因为 XML 中的时间戳 ( 13 Jan 2015 14:13:15GMT ) 不符合标准(这将是 ISO 8601 ,在 Go 布局中: 2006-01-02T15:04:05Z07:00time.RFC3339 )。

解码代码:

ps := Properties{}
if err := xml.Unmarshal([]byte(src), &ps); err != nil {
panic(err)
}
fmt.Printf("%+v", ps)

输出(在 Go Playground 上尝试):

{Props:[{Name:element1 Value:data1} {Name:element2 Value:data2} {Name:element3 Value:data3}
{Name:element4 Value:data4} {Name:element5 Value:data5} {Name:element6 Value:data6}
{Name:element7 Value:data7}] DateTime:13 Jan 2015 14:13:15GMT Category:cat1}

你可以看到Props即使 <datetime> 也以正确的顺序正确包含所有 7 个属性和 <categorisation>在它们之间插入标签。

关于xml - 转到 : Unmarshall XML List containing different entities,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35773044/

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