Как установить xmlns при сериализации объекта в c#

Я сериализирую объект в своей программе MVC ASP.net к строке xml как это;

StringWriter sw = new StringWriter();
XmlSerializer s = new XmlSerializer(typeof(mytype));
s.Serialize(sw, myData);

Теперь это дает мне это как первые 2 строки;

<?xml version="1.0" encoding="utf-16"?>
<GetCustomerName xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

мой вопрос, Как я могу изменить xmlns и тип кодировки при сериализации?

Спасибо

9
задан John 2 April 2010 в 15:08
поделиться

3 ответа

Что я нашел, что работает, так это добавить эту строку в мой класс,

[System.Xml.Serialization.XmlRootAttribute(Namespace = "http://myurl.com/api/v1.0", IsNullable = true)]

и добавить это в мой код, чтобы добавить пространство имен, когда я вызываю serialize

    XmlSerializerNamespaces ns1 = new XmlSerializerNamespaces();
    ns1.Add("", "http://myurl.com/api/v1.0");
    xs.Serialize(xmlTextWriter, FormData, ns1);

до тех пор, пока оба пространства имен совпадают, это работает хорошо.

8
ответ дан 4 December 2019 в 13:46
поделиться

Посмотрите на атрибуты, управляющие сериализацией XML в .NET.

В частности, XmlTypeAttribute может оказаться полезным для вас. Если вы хотите изменить пространство имен по умолчанию для вашего XML-файла, существует второй параметр конструктора XmlSerializer, где вы можете это определить.

1
ответ дан 4 December 2019 в 13:46
поделиться

Тип XmlSerializer имеет второй параметр в своем конструкторе, который является пространством имен xml по умолчанию - пространство имен «xmlns:»:

XmlSerializer s = new XmlSerializer(typeof(mytype), "http://yourdefault.com/");

Чтобы установить кодировку, я бы посоветовал вам использовать XmlTextWriter вместо прямого StringWriter и создайте его примерно так:

XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = Encoding.UTF8;

XmlTextWriter xtw = XmlWriter.Create(filename, settings);

s.Serialize(xtw, myData);

В XmlWriterSettings вы можете определить множество параметров, включая кодировку.

6
ответ дан 4 December 2019 в 13:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: