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

Функция xml.Marshal

Функция xml.Marshal преобразует структуру данных Go в XML-строку. В первый параметр передается структура или значение, которое нужно сериализовать. Вторым параметром возвращается срез байтов и ошибка. При сериализации имена полей структуры становятся именами XML-элементов, а значения полей - содержимым этих элементов.

Синтаксис

data, err := xml.Marshal(v)

Пример

Давайте преобразуем структуру с полем Name в XML-элемент:

package main import ( "encoding/xml" "fmt" ) type Person struct { Name string } func main() { p := Person{Name: "John"} res, err := xml.Marshal(p) if err != nil { fmt.Println(err) return } fmt.Println(string(res)) }

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

"<Person>John</Person>"

Пример

Давайте преобразуем структуру с несколькими полями в XML с вложенными элементами:

package main import ( "encoding/xml" "fmt" ) type Address struct { City string Country string } type User struct { Name string Age int Address Address } func main() { u := User{ Name: "Alice", Age: 30, Address: Address{ City: "New York", Country: "USA", }, } res, err := xml.Marshal(u) if err != nil { fmt.Println(err) return } fmt.Println(string(res)) }

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

"<User><Name>Alice</Name><Age>30</Age><Address><City>New York</City><Country>USA</Country></Address></User>"

Пример

Давайте преобразуем структуру с тегами XML для управления именами элементов и атрибутами:

package main import ( "encoding/xml" "fmt" ) type Product struct { XMLName xml.Name `xml:"product"` ID int `xml:"id,attr"` Name string `xml:"name"` Price float64 `xml:"price"` } func main() { prod := Product{ ID: 1001, Name: "Laptop", Price: 999.99, } res, err := xml.Marshal(prod) if err != nil { fmt.Println(err) return } fmt.Println(string(res)) }

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

"<product id=\"1001\"><name>Laptop</name><price>999.99</price></product>"

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

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