using System.Xml.Serialization;
public static void Main()
Invoice invoice = new Invoice()
TaxTotal = new TaxTotal()
TaxAmount = new MonetaryValue("DKK", 40.00M),
TaxSubtotal = new TaxSubtotal()
TaxableAmount = new MonetaryValue("DKK", 40.00M),
TaxAmount = new MonetaryValue("DKK", 40.00M),
TaxCategory = new TaxCategory()
ID = new TaxCategoryId(),
TaxScheme = new TaxScheme()
ID = new TaxSchemeId("63"),
SerializeAndPrintToConsole(invoice);
Console.WriteLine("Hello World");
public static void SerializeAndPrintToConsole(Invoice taxScheme)
XmlSerializer serializer = new XmlSerializer(typeof(Invoice));
XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
namespaces.Add("cac", "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2");
namespaces.Add("cbc", "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2");
namespaces.Add("ccts", "urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-2");
namespaces.Add("udt", "urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2");
namespaces.Add("", "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2");
StringWriter stringWriter = new StringWriter();
serializer.Serialize(stringWriter, taxScheme, namespaces);
string xmlString = stringWriter.ToString();
Console.WriteLine("Serialized XML:");
Console.WriteLine(xmlString);
[XmlRoot(Namespace = XML_Namespaces_OIOUBL2.CDC)]
[XmlElement(Namespace = XML_Namespaces_OIOUBL2.CDC)]
public TaxSchemeId ID { get; set; }
[XmlElement(Namespace = XML_Namespaces_OIOUBL2.CDC)]
public string Name { get; set; }
[XmlElement(Namespace = XML_Namespaces_OIOUBL2.CDC)]
public string CurrencyCode { get; set; }
[XmlAttribute("schemeID")]
public string SchemeID { get; set; }
public string Value { get; set; }
public TaxSchemeId(string value)
SchemeID = "urn:oioubl:id:taxschemeid-1.1";
[XmlRoot(Namespace = "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2")]
[XmlElement(Namespace = XML_Namespaces_OIOUBL2.CAC)]
public TaxTotal TaxTotal { get; set; }
[XmlElement(Namespace = XML_Namespaces_OIOUBL2.CDC)]
public MonetaryValue TaxAmount { get; set; }
[XmlElement(Namespace = XML_Namespaces_OIOUBL2.CAC)]
public TaxSubtotal TaxSubtotal { get; set; }
[XmlElement(Namespace = XML_Namespaces_OIOUBL2.CDC)]
public MonetaryValue TaxableAmount { get; set; }
[XmlElement(Namespace = XML_Namespaces_OIOUBL2.CDC)]
public MonetaryValue TaxAmount { get; set; }
[XmlElement(Namespace = XML_Namespaces_OIOUBL2.CAC)]
public TaxCategory TaxCategory { get; set; }
[XmlElement(Namespace = XML_Namespaces_OIOUBL2.CDC)]
public TaxCategoryId ID { get; set; }
[XmlElement(Namespace = XML_Namespaces_OIOUBL2.CDC)]
public decimal Percent { get; set; }
[XmlElement(Namespace = XML_Namespaces_OIOUBL2.CAC)]
public TaxScheme TaxScheme { get; set; }
public class TaxCategoryId
[XmlAttribute("schemeID")]
public string SchemeID { get; set; }
[XmlAttribute("schemeAgencyID")]
public string SchemeAgencyID { get; set; }
public string Value { get; set; }
SchemeID = "urn:oioubl:id:taxcategoryid-1.1";
public class MonetaryValue
[XmlAttribute("currencyID")]
public string CurrencyID { get; set; }
public decimal Value { get; set; }
public MonetaryValue(string currencyID, decimal value)
public static class XML_Namespaces_OIOUBL2
public const string CDC = "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2";
public const string CAC = "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2";