Делаю сериализацию по примеру
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
[Serializable]
public class UserPrefs
{
public string WindowColor;
public int FontSize;
}
static class Program
{
[STAThread]
static void Main()
{
UserPrefs userData = new UserPrefs();
userData.WindowColor = "Yellow";
userData.FontSize = 50;
BinaryFormatter binFormat = new BinaryFormatter();
// Сохранить объект в локальном файле.
using (Stream fStream = new FileStream("user.xml",
FileMode.Create, FileAccess.Write, FileShare.None))
{
binFormat.Serialize(fStream, userData);
}
}
}
Файл создается но как xml файл он не открывается пишет не удается отобразить страницу XML. Подскажите в чем ошибка.
То, что вы нашли — это бинарная сериализация, а не сериализация в XML.
Надо так:
UserPrefs userData = new UserPrefs();
userData.WindowColor = "Yellow";
userData.FontSize = 50;
//var xml = JsonConvert.SerializeObject(userData);
XmlSerializer seri = new XmlSerializer(typeof(UserPrefs));
// тут вам скорее всего нужен другой тип stream'с
using (var s = new MemoryStream())
{
seri.Serialize(s, userData);
// всё, сериализация окончена
// перегоним в строку для контроля
s.Seek(0, SeekOrigin.Begin);
var text = new StreamReader(s).ReadToEnd();
}
В переменной text будет следующее:
<?xml version="1.0"?>
<UserPrefs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<WindowColor>Yellow</WindowColor>
<FontSize>50</FontSize>
</UserPrefs>
Если вам нужно записать в файл, вместо MemoryStream'а берите сразу FileStream и т. д.
using (var s = File.Create(@"user.xml"))
{
seri.Serialize(s, userData);
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей