The .NET Framework provides the System.Xml.Serialization namespace to serialize an object to XML.
Here’s a full example:
Imports System Imports System.Collections.Generic Public Class Test Public Shared Sub Main() Dim p1 = New Product() With {.Name = "Hosting", .Price = 9.99} Dim p2 = New Product() With {.Name = "Domain", .Price = 9.99} Dim c = New Customer With { .Name = "Dot", .Surname = "Maui", .Age = 33, .Products = New List(Of Product)(New Product() {p1, p2})} Dim x As System.Xml.Serialization.XmlSerializer = New System.Xml.Serialization.XmlSerializer(c.GetType) Dim string_writer As New System.IO.StringWriter Dim ns As New System.Xml.Serialization.XmlSerializerNamespaces x.Serialize(string_writer, c, ns) Console.Write(string_writer.ToString()) End Sub End Class Public Class Customer Public Name As String Public Surname As String Public Age As Integer Public Products As List(Of Product) End Class Public Class Product Public Name As String Public Price As Decimal End Class
The result will be:
<?xml version="1.0" encoding="utf-16"?> <Customer xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Name>Dot</Name> <Surname>Maui</Surname> <Age>33</Age> <Products> <Product> <Name>Hosting</Name> <Price>9.99</Price> </Product> <Product> <Name>Domain</Name> <Price>9.99</Price> </Product> </Products> </Customer>