Как изменить имя набора пользовательского класса после сериализации XML?

Я сериализирую Список класса, и я не доволен сгенерированным выводом XML.

[Serializable()]
public class Foo
{

    [XmlAttribute]
    public String Property1 { get; set; }

    public Foo() { }
}

public class Foo2
{
   List<Foo> _list = new List<Foo>()
   {
      new Foo(){ Property1="hello"}
    };

   // ...
   // code for serialization
   string path = "asdasd";
   using (FileStream fs = new FileStream(path, FileMode.Create))
   {
     XmlSerializer xs = new XmlSerializer(typeof(List<Foo>));
     xs.Serialize(fs, _list);
     fs.Close();
   }
}

Вывод приведет к:

<?xml version="1.0"?>
<ArrayOfFoo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Foo Property1="hello" />
</ArrayOfFoo>

Где я должен установить который атрибут изменить название ArrayOfFoo?

1
задан Deduplicator 10 February 2015 в 22:40
поделиться

1 ответ

Просто используйте правильный конструктор :

var xs = new XmlSerializer(typeof(List<Foo>), new XmlRootAttribute("foos"));

Также вы можете безопасно удалить [Serializable] атрибут из вашего класса Foo . Это для двоичной сериализации, и XmlSerializer игнорирует.

2
ответ дан 2 September 2019 в 22:32
поделиться
Другие вопросы по тегам:

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