Как мне разобрать вложенные XML-элементы в массив строк? - PullRequest
0 голосов
/ 12 февраля 2019

Мой 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 голосов
/ 12 февраля 2019

Вы можете использовать следующую структурную схему для анализа данного 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

...