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

Метод xml.Encoder.Encode

Метод xml.Encoder.Encode выполняет сериализацию переданных данных в формат XML и записывает результат в выходной поток, связанный с экземпляром xml.Encoder. В качестве аргумента метод принимает произвольное значение типа any. Обычно это структура с тегами xml, управляющими формированием элементов и атрибутов. При успешной записи метод возвращает nil, в противном случае — ошибку.

Синтаксис

err := encoder.Encode(v)

Пример

Создадим структуру Person, заполним её данными и сериализуем в XML-строку с помощью xml.Encoder.Encode:

package main import ( "bytes" "encoding/xml" "fmt" ) type Person struct { XMLName xml.Name `xml:"person"` Name string `xml:"name"` Age int `xml:"age"` } func main() { p := Person{ Name: "John", Age: 30, } var buf bytes.Buffer enc := xml.NewEncoder(&buf) enc.Indent("", " ") err := enc.Encode(p) if err != nil { fmt.Printf("error: %v\n", err) return } fmt.Println(buf.String()) }

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

<person> <name>John</name> <age>30</age> </person>

Пример

Покажем, как метод обрабатывает вложенные структуры и XML-атрибуты, заданные через теги xml:

package main import ( "bytes" "encoding/xml" "fmt" ) type Address struct { City string `xml:"city"` Street string `xml:"street"` } type Employee struct { XMLName xml.Name `xml:"employee"` ID int `xml:"id,attr"` FullName string `xml:"fullname"` Address Address `xml:"address"` } func main() { e := Employee{ ID: 1001, FullName: "Jane Doe", Address: Address{ City: "New York", Street: "5th Ave", }, } var buf bytes.Buffer enc := xml.NewEncoder(&buf) enc.Indent("", " ") err := enc.Encode(e) if err != nil { fmt.Printf("error: %v\n", err) return } fmt.Println(buf.String()) }

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

<employee id="1001"> <fullname>Jane Doe</fullname> <address> <city>New York</city> <street>5th Ave</street> </address> </employee>

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

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