chincharovpc
@chincharovpc

Как правильно спарсить xml в golang?

Требуется спарсить xml.
<?xml version="1.0" encoding="WINDOWS-1251"?>
<commandresult>
    <name>abonents.list</name>
    <answer>200: OK</answer>
    <data>
        <items>
            <count>2</count>
            <item>
                <name>id</name>
                <value>67</value>
                <name>phone</name>
                <value>67875667867</value>
                <name>name</name>
                <value>Auth</value>
            </item>
            <item>
                <name>id</name>
                <value>68</value>
                <name>phone</name>
                <value>67875674565</value>
                <name>name</name>
                <value>Auth2</value>
            </item>
        </items>
    </data>
</commandresult>


Как мне спарсить элементы?
<name>id</name>
                <value>67</value>
                <name>phone</name>
                <value>67875667867</value>
                <name>name</name>
                <value>Auth</value>


Мой код выглядит так:
type GetAbonentsResponseXml struct {
	XMLName xml.Name `xml:"commandresult"`
	Name    string   `xml:"name"`
	Answer  string   `xml:"answer"`
	Count   int      `xml:"data>items>count"`
	Items   []struct {
		Name  []string `xml:"name"`
		Value []string `xml:"value"`
	} `xml:"data>items>item"`
}


Только он возвращает массивы из атрибутов name и value
Items: [
  {
     Name:[id phone name] 
     Value:[67 67875667867 Auth]
  }
]


Как мне решить данную задачу? с помощью цикла?
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 1
@12rbah
1) У вас неправильно составлена структура
Сервис по генерации структур для html https://www.onlinetool.io/xmltogo/
2) доступ к элементу будет выглядеть примерно так commandresult.Data[i].Items[i].count, с кодом думаю справитесь
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы