Пространства имен 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?

заранее спасибо

0 ответов

Другие вопросы по тегам