В 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-документы.