Избавьтесь от xsi:type и вместо этого используйте имена тегов.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Избавьтесь от xsi:type и вместо этого используйте имена тегов.

Сообщение Anonymous »

У меня есть несколько производных классов для сериализации в XML:

Код: Выделить всё

public abstract class Level
{

}

[XmlRoot("SubLevel1")]
public class SubLevel1 : Level
{
public string prop1 { get; set; }

public SubLevel1()
{

}

public SubLevel1(string prop)
{
this.prop1 = prop;
}
}

[XmlRoot("SubLevel2")]
public class SubLevel2 : Level
{
[XmlText]
public string prop2 { get; set; }

public SubLevel2()
{

}

public SubLevel2(string s)
{
this.prop2 = s;
}
}
И класс коллекции:

Код: Выделить всё

[XmlInclude(typeof(SubLevel1))]
[XmlInclude(typeof(SubLevel2))]
[XmlRoot("LevelCollection")]
public class LevelCollection : ICollection
{
protected List m_Levels;

public List Levels
{
get { return m_Levels; }
set { m_Levels = value; }
}

public LevelCollection()
{
m_Levels = new List();
}
}
Объект для сериализации:

Код: Выделить всё

Levels.LevelCollection collection = new Levels.LevelCollection();
collection.Add(new Levels.SubLevel1("aaa"));
collection.Add(new Levels.SubLevel2("bbb"));

XmlSerializer serializer = new XmlSerializer(typeof(Levels.LevelCollection));
StringWriter sw = new StringWriter();
XmlWriter writer = XmlWriter.Create(sw);
serializer.Serialize(writer, obj);
string xml = sw.ToString();
После сериализации XML выглядит следующим образом (содержит атрибут xsi:type):

Код: Выделить всё



aaa

bbb

Можно ли и как достичь цели изменить целевой XML на:

Код: Выделить всё



aaa

bbb

Я не могу найти ответ, кроме как написать собственный модуль записи. Интересно, можно ли удалить атрибут типа, используя стандартные атрибуты.


Подробнее здесь: https://stackoverflow.com/questions/791 ... es-instead
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»