Мне нужно сериализовать в XML класс, содержащий список, реализованный с помощью различных конкретных классов.
Мне нужен XML без ссылок на xmlns.
это мой пример :
[Serializable]
public class Root
{
[XmlElement("Tables")]
public List Tables { get; set; } = new List();
}
[XmlInclude(typeof(TableType1))]
[XmlInclude(typeof(TableType2))]
[Serializable]
public class AbstractTable
{
[XmlAttribute]
public string TableName { get; set; }
}
[Serializable]
public class TableType1 : AbstractTable
{
public TableType1()
{
TableName = "TableType1";
}
[XmlAttribute]
public string ValueA { get; set; }
}
[Serializable]
public class TableType2 : AbstractTable
{
public TableType2()
{
TableName = "TableType2";
}
[XmlAttribute]
public string ValueB { get; set; }
}
class Program
{
static void Main(string[] args)
{
var allegato = new Root();
var tableType1 = new TableType1();
tableType1.ValueA = "AAA";
allegato.Tables.Add(tableType1);
var tableType2 = new TableType2();
tableType2.ValueB = "BBB";
allegato.Tables.Add(tableType2);
var string2Write = SerializeToString(allegato);
File.WriteAllText(Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Test.xml"), string2Write);
}
public static string SerializeToString(T value)
{
var emptyNamespaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty });
var serializer = new XmlSerializer(value.GetType());
var settings = new XmlWriterSettings();
settings.Indent = true;
settings.OmitXmlDeclaration = true;
using (var stream = new StringWriter())
using (var writer = XmlWriter.Create(stream, settings))
{
serializer.Serialize(writer, value, emptyNamespaces);
return stream.ToString();
}
}
}
Я получил SerializeToString из StackOverflow, но работает только для класса контейнера.
Проблема в том, что я не могу удалить xmlns из XML, вот что я получаю:
Подробнее здесь: https://stackoverflow.com/questions/792 ... nt-classes
XmlSerializer без xmlns в классах-потомках ⇐ C#
Место общения программистов C#
-
Anonymous
1732687049
Anonymous
Мне нужно сериализовать в XML класс, содержащий список, реализованный с помощью различных конкретных классов.
Мне нужен XML без ссылок на xmlns.
это мой пример :
[Serializable]
public class Root
{
[XmlElement("Tables")]
public List Tables { get; set; } = new List();
}
[XmlInclude(typeof(TableType1))]
[XmlInclude(typeof(TableType2))]
[Serializable]
public class AbstractTable
{
[XmlAttribute]
public string TableName { get; set; }
}
[Serializable]
public class TableType1 : AbstractTable
{
public TableType1()
{
TableName = "TableType1";
}
[XmlAttribute]
public string ValueA { get; set; }
}
[Serializable]
public class TableType2 : AbstractTable
{
public TableType2()
{
TableName = "TableType2";
}
[XmlAttribute]
public string ValueB { get; set; }
}
class Program
{
static void Main(string[] args)
{
var allegato = new Root();
var tableType1 = new TableType1();
tableType1.ValueA = "AAA";
allegato.Tables.Add(tableType1);
var tableType2 = new TableType2();
tableType2.ValueB = "BBB";
allegato.Tables.Add(tableType2);
var string2Write = SerializeToString(allegato);
File.WriteAllText(Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Test.xml"), string2Write);
}
public static string SerializeToString(T value)
{
var emptyNamespaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty });
var serializer = new XmlSerializer(value.GetType());
var settings = new XmlWriterSettings();
settings.Indent = true;
settings.OmitXmlDeclaration = true;
using (var stream = new StringWriter())
using (var writer = XmlWriter.Create(stream, settings))
{
serializer.Serialize(writer, value, emptyNamespaces);
return stream.ToString();
}
}
}
Я получил SerializeToString из StackOverflow, но работает только для класса контейнера.
Проблема в том, что я не могу удалить xmlns из XML, вот что я получаю:
Подробнее здесь: [url]https://stackoverflow.com/questions/79227666/xmlserializer-without-xmlns-in-descendant-classes[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия