Добрый день. Работаю с XMLSerializer (сохраняю опции программы в виде XML-файла). Сериализация работает, десериализация - нет.
Вот код:
Код | using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Xml; using System.Windows.Forms; using System.Xml.Serialization;
namespace XMLAsk { class Test { public static string ConfigFileName = "C:\\Work\\TMP\\Config.xml";
public static void Main() {
MyOptions myOptions = new MyOptions(); myOptions.Title = "Hello, world!"; myOptions.Rating = 15;
SerializeToXML(myOptions);
MyOptions myOptions2 = new MyOptions(); DeserializeFromXML(myOptions2);
MessageBox.Show(myOptions2.Title);
}
public static void SerializeToXML(MyOptions myOptions) { XmlSerializer serializer = new XmlSerializer(typeof(MyOptions)); TextWriter textWriter = new StreamWriter(ConfigFileName); serializer.Serialize(textWriter, myOptions); textWriter.Close();
}
public static void DeserializeFromXML(MyOptions myOptions2) { XmlSerializer deserializer = new XmlSerializer(typeof(MyOptions)); TextReader textReader = new StreamReader(ConfigFileName); myOptions2 = (MyOptions)deserializer.Deserialize(textReader); textReader.Close();
} }
public class MyOptions {
private string title; private int rating; public string Title { get { return title; } set { title = value; } }
public int Rating { get { return rating; } set { rating = value;} } }
}
|
После выполнения этого кода создается файл Config.xml. C его содержимым все в порядке: что записал, то и вижу:
Код | <?xml version="1.0" encoding="utf-8" ?> - <MyOptions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Title>Hello, world!</Title> <Rating>15</Rating> </MyOptions>
|
Но когда я выполняю десериализацию и с помощью MessageBox.Show вывожу myOptions2.Titlе (см. код выше), то получаю пустую строку.
Вопрос: почему пустая строка, а не "Hello, world!"?
Пасиб.
------------------
Разобрался:
Код | public static MyOptions DeserializeFromXML(MyOptions myOptions2) { XmlSerializer deserializer = new XmlSerializer(typeof(MyOptions)); TextReader textReader = new StreamReader(ConfigFileName); myOptions2 = (MyOptions)deserializer.Deserialize(textReader); textReader.Close(); return (myOptions2);
}
|
|