suroMind

[C#] XML 직렬화 클래스 사용 예제 본문

IT분야/C#

[C#] XML 직렬화 클래스 사용 예제

suroMind 2011. 11. 3. 18:42

XML 직렬화하는 방법은 http://blog.suromind.com/78 참조

1. XML 예제

  
    admin
    Uaps+82i8GTmJBZbvbkI6Q==
    Administrator
  
  
    admin22
    Uaps+82i8GTmJBZbvbkI6Q==
    Administrator
  
  
    admin333
    Uaps+82i8GTmJBZbvbkI6Q==
    Operator
  
  
    admin777
    Uaps+82i8GTmJBZbvbkI6Q==
    Visitor
  

2. XML 로드
private static List _userInfoList;
/// 
        /// 사용자 정보 로드
        /// 
        /// 
        public static void reqLoadUserInfo(string path) {
            try {
                var s = new XmlSerializer(typeof(UserInfo));
                var fs = new FileStream(path, FileMode.Open);
                TextReader reader = new StreamReader(fs);
                fs.Position = 0;
                var c = (UserInfo)s.Deserialize(reader);
                fs.Close();
                reader.Dispose();

                _userInfoList = c.Items != null ? c.Items.ToList() : new List();
            } catch (Exception ex) {
                Console.WriteLine("Xml Load Error" + ex.ToString());
            }
        }

3. XML 저장
/// 
        /// 사용자 정보 저장
        /// 
        /// 
        public void reqStoreUserInfo(string fileName) {
            if (fileName == "") {
                fileName = Application.StartupPath + @"\Xml\UserInfo.xml";
            }
            var ca = new UserInfo();
            try {
                ca.Items = _userInfoList.ToArray();
                var s = new XmlSerializer(typeof(UserInfo));
                var fs = new FileStream(fileName, FileMode.Create);
                TextWriter writer = new StreamWriter(fs);
                fs.Position = 0;
                s.Serialize(writer, ca);
                fs.Close();
            } catch (Exception ex) {
                Console.WriteLine("XML Save Error : " + ex.ToString());
            }
        }

4. 사용
private void Test() {
            foreach (UserInfoUser item in 클래스명._userInfoList) {
                Console.WriteLine(item.Power);
                Console.WriteLine(item.UserId);
                Console.WriteLine(item.Passwd);
                Console.WriteLine(item.userNo);
            }
        }
Comments