Я сериализирую Список класса, и я не доволен сгенерированным выводом 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?
Просто используйте правильный конструктор :
var xs = new XmlSerializer(typeof(List<Foo>), new XmlRootAttribute("foos"));
Также вы можете безопасно удалить [Serializable]
атрибут из вашего класса Foo
. Это для двоичной сериализации, и XmlSerializer
игнорирует.