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

问题描述:

My XML contains an array of predefined elements, but I can't pick up the array. Here is the XML structure:

<?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>

I tried to make a struct that looks like:

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

But it gives me empty array at output.

You can use the following struct schema to parse the given 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"`
}

Working example: https://play.golang.org/p/H6EHl_1dPLg