gpt4 book ai didi

xml - Go:XML Unmarshal 嵌套键值对

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

我开始了一个处理 XML 输入的项目,我遇到了解码方法的问题。我正在尝试将下面的 XML 编码到一个结构中。有多个“值”标签,这很好,但在“值”标签内,可以有一个带有值的“值”标签。或者有多个'value'标签,里面有'key'&'value'标签。我试图在 Go 结构中捕获它,但到目前为止没有运气......

<lines>
<values>
<key>Key_1</key>
<value>Value_1</value>
</values>
<values>
<key>Key_2</key>
<value>
<key>NestedKey_1</key>
<value>NestedValue_1</value>
</value>
<value>
<key>NestedKey_2</key>
<value>NestedValue_2</value>
</value>
</values>

去结构:

type Value struct {
Key string `xml:"key"`
Value string `xml:"value"`
}

type Values struct {
Key string `xml:"key"`
Value []Value `xml:"value"`
}

type Lines struct {
Values []Values `xml:"values"`
}

当我打印解码输出时,我确实看到了 Key_1 和 Key_2 以及嵌套的键值对,但我没有在输出中看到 Value_1。这是显而易见的,因为它是一个字符串而不是一个数组,有人知道如何解决这个问题吗?

Playground :http://play.golang.org/p/I4U0lhPt5U

最佳答案

需要注意两点:

  • 表示 XML 元素内容的 struct 类型可能具有 xml.Name 类型的特殊字段“XMLName”。

    这可用于具有与 XML 元素不同命名的类型。

  • 通过“xml”标记为 struct 类型的字段指定的 XML 元素的名称可能会使用 指定元素的嵌套> 表示法,如

    Foo string `xml:"a>b>c"`

    这可用于跳过不需要的中间(封闭)元素并直接提取其感兴趣的子元素。

所有这些内容都在 package's doc for the Unmarshal() func 中进行了解释.

据推测,这些功能应该可以让您处理您的问题。

如果您发现您的案例确实是病态的并且难以处理简单的解码,您可以尝试接近它using XPath .

关于xml - Go:XML Unmarshal 嵌套键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32528184/

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