如何将嵌套的XML元素解组为字符串数组?

时间:2019-02-12 14:38:53

标签: xml go xml-parsing

我的XML包含一个预定义元素的数组,但是我无法选择该数组。这是XML结构:

<?xml version='1.0' encoding='UTF-8'?>
<results preview='0'>
    <meta>
       <fieldOrder>
          <field>values(metric_name)</field>
       </fieldOrder>
    </meta>
    <result offset='0'>
        <field k='values(metric_name)'>
            <value><text>process.cpu.avg</text></value>
            <value><text>process.cpu.last</text></value>
            <value><text>process.cpu.max</text></value>
            <value><text>process.cpu.min</text></value>
            <value><text>process.disk.avg</text></value>
            <value><text>process.disk.last</text></value>
            <value><text>process.disk.max</text></value>
            <value><text>process.disk.min</text></value>
            <value><text>process.ram.avg</text></value>
            <value><text>process.ram.last</text></value>
            <value><text>process.ram.max</text></value>
            <value><text>process.ram.min</text></value>
        </field>
    </result>
</results>

我试图制作一个看起来像这样的结构:

type Metrics struct {
    Value []string `xml:">text"`
}

但是它给了我输出一个空数组。

1 个答案:

答案 0 :(得分:0)

您可以使用以下结构模式来解析给定的XML。

type Results struct {
    Meta   Meta   `xml:"meta"`
    Result Result `xml:"result"`
}

type Meta struct {
    FieldOrder FieldOrder `xml:"fieldOrder"`
}

type FieldOrder struct {
    Fields []string `xml:"field"`
}

type Result struct {
    Fields []Field `xml:"field"`
}

type Field struct {
    K      string   `xml:"k,attr"`
    Values []string `xml:"value>text"`
}

工作示例:https://play.golang.org/p/H6EHl_1dPLg