РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1148 of 1593 menu

Функция xml.NewDecoder

Функция xml.NewDecoder создает новый декодер, который читает XML-данные из переданного io.Reader. В качестве единственного параметра она принимает объект, реализующий интерфейс io.Reader, например, файл, сетевой сокет или строку, преобразованную в strings.Reader. Возвращает указатель на структуру xml.Decoder, с помощью которого можно последовательно читать XML-токены или сразу декодировать данные в структуру.

Синтаксис

func NewDecoder(r io.Reader) *Decoder

Пример

Базовый пример создания декодера из строки с XML:

package main import ( "encoding/xml" "fmt" "strings" ) func main() { xmlData := `<root><name>John</name><age>30</age></root>` reader := strings.NewReader(xmlData) decoder := xml.NewDecoder(reader) fmt.Printf("%T", decoder) }

Результат выполнения кода:

*xml.Decoder

Пример

Декодирование XML в структуру с использованием Decoder.Decode:

package main import ( "encoding/xml" "fmt" "strings" ) type Person struct { XMLName xml.Name `xml:"root"` Name string `xml:"name"` Age int `xml:"age"` } func main() { xmlData := `<root><name>Jane</name><age>25</age></root>` decoder := xml.NewDecoder(strings.NewReader(xmlData)) var p Person err := decoder.Decode(&p) if err != nil { fmt.Println("Error:", err) return } fmt.Printf("Name: %s, Age: %d", p.Name, p.Age) }

Результат выполнения кода:

"Name: Jane, Age: 25"

Пример

Использование Decoder.DecodeElement для декодирования с настройками:

package main import ( "encoding/xml" "fmt" "strings" ) type Item struct { Name string `xml:"name"` Value int `xml:"value"` } func main() { xmlData := `<root><item><name>Apple</name><value>50</value></item></root>` decoder := xml.NewDecoder(strings.NewReader(xmlData)) // Поиск элемента <item> for { token, err := decoder.Token() if err != nil { break } switch se := token.(type) { case xml.StartElement: if se.Name.Local == "item" { var item Item decoder.DecodeElement(&item, &se) fmt.Printf("Item: %s, Value: %d", item.Name, item.Value) } } } }

Результат выполнения кода:

"Item: Apple, Value: 50"

Смотрите также

  • функцию xml.NewEncoder,
    которая создает энкодер для записи XML
  • функцию xml.Unmarshal,
    которая декодирует XML из среза байтов
  • функцию xml.Marshal,
    которая кодирует структуру в XML
  • метод Decoder.Decode,
    который читает следующий XML-элемент в структуру
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить