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

Тип xml.Attr

Тип xml.Attr представляет собой структуру, описывающую один атрибут XML-элемента. Он содержит два поля: Name (тип xml.Name) - имя атрибута с его пространством имен, и Value (тип string) - значение атрибута. Этот тип используется при ручном разборе XML-документов с помощью xml.Decoder, а также в структурах, предназначенных для маршалинга и анмаршалинга.

Структура типа

type Attr struct { Name Name Value string }

Поле Name содержит локальное имя атрибута и его пространство имен, а поле Value хранит строковое значение атрибута.

Пример

Давайте создадим экземпляр xml.Attr и выведем его поля:

package main import ( "encoding/xml" "fmt" ) func main() { attr := xml.Attr{ Name: xml.Name{ Local: "id", }, Value: "12345", } fmt.Println(attr.Name.Local) fmt.Println(attr.Value) }

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

"id" "12345"

Пример

Атрибуты могут иметь пространство имен. Давайте создадим атрибут с полным именем:

package main import ( "encoding/xml" "fmt" ) func main() { attr := xml.Attr{ Name: xml.Name{ Space: "http://example.com/ns", Local: "version", }, Value: "1.0", } fmt.Println(attr.Name.Space) fmt.Println(attr.Name.Local) fmt.Println(attr.Value) }

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

"http://example.com/ns" "version" "1.0"

Пример

Тип xml.Attr часто используется при работе с xml.StartElement. Получим атрибуты из XML-элемента:

package main import ( "encoding/xml" "fmt" "strings" ) func main() { xmlData := `<book id="123" lang="en">Go Programming</book>` decoder := xml.NewDecoder(strings.NewReader(xmlData)) for { token, err := decoder.Token() if err != nil { break } switch element := token.(type) { case xml.StartElement: for _, attr := range element.Attr { fmt.Printf("%s: %s\n", attr.Name.Local, attr.Value) } } } }

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

"id: 123" "lang: en"

Пример

При маршалинге структур в XML можно использовать теги для указания атрибутов. Но тип xml.Attr также может быть использован для динамической работы с атрибутами:

package main import ( "encoding/xml" "fmt" ) func main() { attrs := []xml.Attr{ {Name: xml.Name{Local: "id"}, Value: "user-001"}, {Name: xml.Name{Local: "active"}, Value: "true"}, } start := xml.StartElement{ Name: xml.Name{Local: "user"}, Attr: attrs, } fmt.Println(start.Name.Local) for _, attr := range start.Attr { fmt.Printf("%s=%s ", attr.Name.Local, attr.Value) } }

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

"user" "id=user-001 active=true "

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

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