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

Функция xml.MarshalIndent

Функция xml.MarshalIndent преобразует переданную структуру или значение в XML-строку с отступами для удобочитаемости. Она принимает три параметра: значение для сериализации, префикс для каждой новой строки и строку отступа. Возвращает срез байтов с XML-данными и ошибку, если сериализация невозможна.

Синтаксис

xml.MarshalIndent(v any, prefix, indent string) ([]byte, error)

Пример ⁅n="sect"⁆

Выполним сериализацию структуры с отступом в два пробела:

package main import ( "encoding/xml" "fmt" ) type Person struct { XMLName xml.Name `xml:"person"` Name string `xml:"name"` Age int `xml:"age"` City string `xml:"city,omitempty"` } func main() { p := Person{Name: "Alice", Age: 30} res, err := xml.MarshalIndent(p, "", " ") if err != nil { fmt.Println(err) return } fmt.Println(string(res)) }

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

"<person> <name>Alice</name> <age>30</age> </person>"

Пример ⁅n="sect"⁆

Используем префикс для добавления отступов перед каждым тегом:

package main import ( "encoding/xml" "fmt" ) type Item struct { XMLName xml.Name `xml:"item"` ID int `xml:"id"` Value string `xml:"value"` } func main() { items := []Item res, err := xml.MarshalIndent(items, " ", " ") if err != nil { fmt.Println(err) return } fmt.Println(string(res)) }

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

" <item> <id>1</id> <value>first</value> </item> <item> <id>2</id> <value>second</value> </item>"

Пример ⁅n="sect"⁆

Обработка ошибки при попытке сериализовать недопустимый тип:

package main import ( "encoding/xml" "fmt" ) func main() { ch := make(chan int) res, err := xml.MarshalIndent(ch, "", " ") if err != nil { fmt.Println("Error:", err) return } fmt.Println(string(res)) }

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

"Error: xml: unsupported type: chan int"

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

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