Добавление пространства имен "xmlns" с префиксом и без него - PullRequest
0 голосов
/ 04 октября 2019

Я работаю над классом C #, я хочу сериализовать, все идет хорошо, за исключением того, что я схожу с ума, получая пространства имен моего корневого элемента следующим образом:

<m:DE815 xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:m="http://das.dogane.finanze.it"   xmlns="http://das.dogane.finanze.it" versione="1.0">

Мне нужно написать внутри корневого элемента обаxmlns = "http://das.dogane.finanze.it" и xmlns: m =" http://das.dogane.finanze.it" но я получаю вот что:

<m:DE815 xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:m="http://das.dogane.finanze.it" versione="1.0">

Вот код, который я использую для сериализации моего класса:

            stream = new MemoryStream(); // read xml in memory

            XmlWriter xmlWriter = XmlWriter.Create(stream);

            XmlSerializer serializer = new XmlSerializer(typeof(DE815), "http://das.dogane.finanze.it");

            List<XmlQualifiedName> names = new List<XmlQualifiedName>();

            var xmlns = new XmlSerializerNamespaces(names.ToArray());
            xmlns.Add("m", "http://das.dogane.finanze.it");
            xmlns.Add("xs", "http://www.w3.org/2001/XMLSchema");
            xmlns.Add("", "http://das.dogane.finanze.it");
            serializer.Serialize(xmlWriter, de815, xmlns); // read object

            int count = (int)stream.Length; // saves object in memory stream

            byte[] arr = new byte[count];
            stream.Seek(0, SeekOrigin.Begin);

            stream.Read(arr, 0, count);
            UTF8Encoding utf = new UTF8Encoding(); // convert byte array to string

            String xmlAsString = utf.GetString(arr).Trim();

            File.WriteAllText("d:\\prova_DE815.xml", xmlAsString, Encoding.UTF8);

Вот объявление класса, который я хочу сериализовать:

[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")
System.SerializableAttribute()
System.Diagnostics.DebuggerStepThroughAttribute()
System.ComponentModel.DesignerCategoryAttribute("code")
System.Xml.Serialization.XmlTypeAttribute(Namespace="http://das.dogane.finanze.it", AnonymousType=true)
System.Xml.Serialization.XmlRootAttribute(Namespace="http://das.dogane.finanze.it", IsNullable=false)
public partial class DE815 {

Что мне не хватает в коде?

Заранее спасибо за вашу помощь, не стесняйтесь задавать больше вопросов, если я пропустиллюбая информация.

...