Golang Парсинг XML, как создать произвольные вложения?

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

Вот пример, который иллюстрирует процесс создания вложений в XML с использованием пакета encoding/xml:

package main

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

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

type Address struct {
	Street string `xml:"street"`
	City   string `xml:"city"`
}

func main() {
	person := Person{
		Name: "John Doe",
		Age:  30,
		Address: Address{
			Street: "123 Main St",
			City:   "New York",
		},
	}

	xmlData, err := xml.MarshalIndent(person, "", "    ")
	if err != nil {
		fmt.Printf("Ошибка при создании XML: %vn", err)
		return
	}

	xmlFile, err := os.Create("person.xml")
	if err != nil {
		fmt.Printf("Ошибка при создании файла XML: %vn", err)
		return
	}
	defer xmlFile.Close()

	xmlFile.Write(xmlData)
	fmt.Println("XML-файл создан успешно.")
}

В этом примере мы создаем структуру Person, которая содержит имя, возраст и адрес. Адрес представлен отдельной структурой Address, которая включает поля Street и City. Затем мы создаем экземпляр структуры Person со значениями и используем функцию xml.MarshalIndent() для преобразования структуры в XML-данные. Затем мы создаем файл person.xml и записываем в него созданный XML-документ.

Чтобы проверить, что XML-документ был создан правильно, вы можете открыть файл person.xml и увидеть следующее содержимое:

<person>
    <name>John Doe</name>
    <age>30</age>
    <address>
        <street>123 Main St</street>
        <city>New York</city>
    </address>
</person>

Таким образом, вы можете создавать произвольные вложения в XML, определяя структуры данных, соответствующие вашим потребностям, и используя пакет encoding/xml для преобразования этих структур в XML-документы.