Как создать xml c атрибутами golang?

В языке программирования Go есть встроенная поддержка для работы с XML. Чтобы создать XML с атрибутами в Go, вам необходимо использовать пакет encoding/xml.

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

type Person struct {
    XMLName xml.Name `xml:"person"`
    Name    string   `xml:"name,attr"`
    Age     int      `xml:"age,attr"`
}

В этом примере мы создаем структуру Person, которая будет представлять элемент <person> в XML с атрибутами name и age.

Затем вы можете создать экземпляр структуры Person с заполненными данными, например:

person := Person{Name: "John Doe", Age: 30}

Далее вам нужно сериализовать этот объект в XML, используя пакет encoding/xml. Для этого используйте функцию Marshal, которая преобразует значение структуры в XML-строку:

xmlBytes, err := xml.Marshal(person)
if err != nil {
    log.Fatal(err)
}

Теперь в переменной xmlBytes у вас есть сериализованное представление структуры Person в виде XML-строки. Вы можете сохранить ее в файл или выполнить другие операции с ней по вашему усмотрению.

Вот пример полной программы, которая создает XML-строку с атрибутами:

package main

import (
    "encoding/xml"
    "fmt"
    "log"
)

type Person struct {
    XMLName xml.Name `xml:"person"`
    Name    string   `xml:"name,attr"`
    Age     int      `xml:"age,attr"`
}

func main() {
    person := Person{Name: "John Doe", Age: 30}

    xmlBytes, err := xml.Marshal(person)
    if err != nil {
        log.Fatal(err)
    }

    xmlStr := string(xmlBytes)
    fmt.Println(xmlStr)
}

При выполнении этой программы вы получите следующий вывод:

<person name="John Doe" age="30"></person>

Как видно из этого примера, создание XML с атрибутами в Go просто с использованием пакета encoding/xml. Вы можете определить структуры данных, заполнить их значениями и преобразовать их в XML-строку с помощью функции Marshal.