Страницы

Поиск по вопросам

вторник, 7 апреля 2020 г.

Исключить запись стандартных namespace при записи XML

#c_sharp

                    


При записи объекта в xml получаю следующее(см. скрин). Как сделать так чтобы запись,
которая следует после тега report и до тега eeprom не было. И как еще добавить в начало
файла следующее 



    


Ответы

Ответ 1



Попробуйте так: XmlSerializer s = new XmlSerializer(objectToSerialize.GetType()); XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("",""); s.Serialize(xmlWriter, objectToSerialize, ns); enSO

Ответ 2



Для задания настроек сериализации используется класс XmlWriterSetting, который имеет параметры OmitXmlDeclaration - возвращает или задает значение, определяющее, следует ли опустить XML-объявление. Encoding - Возвращает или задает тип используемой кодировки текста. Тогда ваш код будет иметь следующий вид XmlSerializer formatter = new XmlSerializer(typeof(Report)); // объект, который сериализуем Report obj = new Report(); // опускаем все определения пространств имен XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("",""); //получаем поток, куда будем записывать сериализованный объект using (FileStream fs = new FileStream(pathXmlFileWrite, FileMode.OpenOrCreate)) { XmlWriter writer = XmlWriter.Create(fs, new XmlWriterSettings() { OmitXmlDeclaration = false, Indent = true, Encoding = Encoding.GetEncoding("ISO-8859-1") }); formatter.Serialize(writer, obj, ns); } В настройках сериализации мы явно указали не удалять XmlDeclaration и установили кодировку Latin1(ISO8859-1) через свойство Encoding.

Комментариев нет:

Отправить комментарий