Пространства имен XML для сериализации C# в XmlElement
Я пытаюсь создать Peppol Invoice xml с помощью C# XmlSerializer. Это все работает нормально, за исключением пространств имен.
Стандартный формат Peppol имеет пространства имен в XmlRoot, но также и в одном из XmlElements.
Пример XML
<?xml version="1.0" encoding="UTF-8"?>
<StandardBusinessDocument xmlns="http://www.unece.org/cefact/namespaces/StandardBusinessDocumentHeader">
<StandardBusinessDocumentHeader>
...
</StandardBusinessDocumentHeader>
<Invoice
xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:ccts="urn:un:unece:uncefact:documentation:2"
xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2"
xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
...
</Invoice>
</StandardBusinessDocument>
Если я добавлю все пространства имен с помощью XmlSerializerNamespaces, все эти пространства имен будут назначены "StandardBusinessDocument"
Пример кода:
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("cac", "aaa");
ns.Add("cbc", "bbb");
ns.Add("ccts", "ccc");
XmlSerializer serializer = new XmlSerializer(data.GetType());
using (StringWriter writer = new StringWriter())
{
serializer.Serialize(writer, data, ns);
return writer.ToString();
}
Есть ли способ добавить эти пространства имен в XmlElement Invoice?
заранее спасибо