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

Тип xml.CharData

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

Синтаксис

type CharData []byte

Пример использования при парсинге XML

Давайте распарсим XML-документ и извлечем символьные данные из элементов:

package main import ( "encoding/xml" "fmt" "strings" ) func main() { xmlData := `<root> <name>John</name> <age>30</age> <city>New York</city> </root>` decoder := xml.NewDecoder(strings.NewReader(xmlData)) for { token, err := decoder.Token() if err != nil { break } switch elem := token.(type) { case xml.CharData: data := strings.TrimSpace(string(elem)) if data != "" { fmt.Printf("%q\n", data) } } } }

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

"John" "30" "New York"

Пример преобразования CharData в строку

Давайте преобразуем xml.CharData в строку и выполним с ней различные операции:

package main import ( "encoding/xml" "fmt" ) func main() { var data xml.CharData = []byte("Hello, World!") str := string(data) fmt.Printf("string: %q\n", str) fmt.Printf("length: %d\n", len(str)) fmt.Printf("bytes: %v\n", []byte(data)) }

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

"string: \"Hello, World!\"" "length: 13" "bytes: [72 101 108 108 111 44 32 87 111 114 108 100 33]"

Пример работы с экранированными символами

Давайте обработаем символьные данные, содержащие специальные символы:

package main import ( "encoding/xml" "fmt" ) func main() { xmlData := `<data><Hello> & "World"</data>` decoder := xml.NewDecoder(strings.NewReader(xmlData)) for { token, err := decoder.Token() if err != nil { break } switch elem := token.(type) { case xml.CharData: unescaped := string(elem) fmt.Printf("Оригинал: %q\n", unescaped) } } }

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

"Оригинал: \"<Hello> & \"World\"\""

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

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