나는 테스트 콘솔 응용 프로그램을 가지고 있는데, serializaiton 및 deserialization을 사용하여 데이터를 XML 파일에 저장하려고합니다. serialize 메서드는 제대로 작동하지만 deserialization이 작동하지 않는 것 같습니다. 오류는 발생하지 않지만 .xml 파일에서 내 데이터를로드하지 않습니다. 왜 그런지 알아?C# 직렬화가 작동하지 않습니까?
class Program
{
static void Main(string[] args)
{
ArrayList siteList = new ArrayList();
DeserializeArray();
siteList.Add("Test 1");
siteList.Add("Test 2");
foreach (var item in siteList)
{
Console.WriteLine(item);
}
SerializeArray(siteList);
if (siteList.Contains("Test 2"))
{
Console.WriteLine("Test 2 exists!");
Console.Read();
}
}
public static void SerializeArray(ArrayList siteList)
{
XmlSerializer serializer = new XmlSerializer(typeof(ArrayList));
TextWriter textWriter = new StreamWriter("SiteList.xml");
serializer.Serialize(textWriter, siteList);
textWriter.Close();
}
static ArrayList DeserializeArray()
{
XmlSerializer deserializer = new XmlSerializer(typeof(ArrayList));
TextReader textReader = new StreamReader("SiteList.xml");
ArrayList siteList;
siteList = (ArrayList)deserializer.Deserialize(textReader);
textReader.Close();
return siteList;
}
}
} 그것은 (시험) 잘 작동하고
이 경우 비 직렬화의 요점이 사라지지 않습니까? deserialization은 소스에서 데이터를 가져온다고 생각했습니다. 기존의 .xml 파일에 매번 새로운 .xml 파일을 추가하고 싶습니다. 그래서 처음에 역 직렬화하지 않아야합니까? – karlstackoverflow
기존 XML에 yes를 추가하려면 먼저 deserialize 할 수 있지만 수행하지 않은 변수에 결과를 할당해야합니다 :'ArrayList siteList = DeserializeArray();' – BrokenGlass
http : // stackoverflow .com/questions/5931484/c-deserializing-but-not-adding-before-xml – karlstackoverflow