I wanna add prefixes like cbc: cac: iac: to xml output to see output like this - <cbc:ID>custom value</cbc:ID>
but everytime it looks like <ID>custom value</ID>
.
Also I've used namespace urls in CreateElement method from XML Document but everytime the output is adding these urls after every prefix and I don't need this.
Could u say to me how can I add prefixes in xml like that?
If you are using XML serialization code will look like this. When no namespace use [XmlElement(Namespace = "")]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
namespace ConsoleApp2
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
namespaces.Add(string.Empty, "urn:carrier:names:specification:ubl:schema:xsd:CarrierDealerContractorInvoice-1.0");
namespaces.Add("cac", "urn:oasis:names:draft:ubl:schema:xsd:CommonAggregateComponents-2");
namespaces.Add("cbc", "urn:oasis:names:draft:ubl:schema:xsd:CommonBasicComponents-2");
namespaces.Add("ibc", "urn:carrier:names:specification:ubl:schema:xsd:CarrierDealerContractorInvoiceBasicComponents-1.0");
namespaces.Add("iac", "urn:carrier:names:specification:ubl:schema:xsd:CarrierDealerContractorInvoiceAggregateComponents-1.0");
namespaces.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
XmlWriter writer = XmlWriter.Create(FILENAME, settings);
XmlSerializer serializer = new XmlSerializer(typeof(DealerContractorInvoice));
DealerContractorInvoice invoice = new DealerContractorInvoice();
serializer.Serialize(writer, invoice, namespaces);
}
}
[XmlRoot(Namespace = "urn:oasis:names:draft:ubl:schema:xsd:CommonBasicComponents-2")]
public class DealerContractorInvoice
{
[XmlElement(Namespace = "urn: carrier:names: specification:ubl: schema:xsd: CarrierDealerContractorInvoiceAggregateComponents - 1.0")]
public string ID { get; set; }
[XmlElement(Namespace = "urn:carrier:names:specification:ubl:schema:xsd:CarrierDealerContractorInvoiceAggregateComponents-1.0")]
DealerContractorInvoiceLine DealerContractorInvoiceLine { get; set; }
}
public class DealerContractorInvoiceLine
{
}
}
Using xml linq :
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
string ident = "<?xml version='1.0'?>" +
"<DealerContractorInvoice " +
" xmlns=\"urn: carrier: names: specification: ubl: schema: xsd: CarrierDealerContractorInvoice - 1.0\"" +
" xmlns:cac=\"urn: oasis: names: draft: ubl: schema: xsd: CommonAggregateComponents - 2\"" +
" xmlns:cbc=\"urn: oasis: names: draft: ubl: schema: xsd: CommonBasicComponents - 2\"" +
" xmlns:ibc=\"urn: carrier: names: specification: ubl: schema: xsd: CarrierDealerContractorInvoiceBasicComponents - 1.0\"" +
" xmlns:iac=\"urn: carrier: names: specification: ubl: schema: xsd: CarrierDealerContractorInvoiceAggregateComponents - 1.0\"" +
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" +
" xsi:schemaLocation=\"urn:carrier:names:specification:ubl:schema:xsd:CarrierDealerContractorInvoice-1.0 ../../src/xsd/runtime/maindoc/UBL-CarrierDealerContractorInvoice-1.0.xsd\"" +
"/>";
XDocument doc = XDocument.Parse(ident);
XElement invoice = doc.Root;
//use when no prefix
XNamespace ns = invoice.GetDefaultNamespace();
XNamespace nsCbc = invoice.GetNamespaceOfPrefix("cbc");
XElement id = new XElement(nsCbc + "ID");
invoice.Add(id);
}