일반 데이터 개체 모음을 직렬화 및 역직렬화하여 데이터 개체를 유지하는 방법입니다.
일반적으로 데이터베이스를 사용할 때 문제가 발생하는 경우가 많습니다. 즉, 데이터 개체 개체가 데이터베이스에 삽입되는 것을 원하지 않지만 그런 다음 이를
XML 문자열로 직렬화하여 다른 위치에 저장할 수 있습니다. 문자열이 생성되므로 저장하려는 위치에 저장할 수 있습니다. 예를 들어 asp.net의 ViewState, 쿠키, 캐시 등이 있습니다.
먼저 데이터 엔터티 클래스를 정의합니다.
클래스 엔터티
{
공공엔티티()
{}
개인 정수 ID;
공개 정수 ID
{
얻다
{
반환 ID;
}
세트
{
아이디 = 값;
}
}
개인 문자열 이름;
공개 문자열 이름
{
얻다
{
이름 반환;
}
세트
{
이름 = 값;
}
}
비공개 이중 가격;
공개 이중 가격
{
얻다
{
반품 가격;
}
세트
{
가격 = 가치;
}
}
}
따라서 이를 List
List
엔터티 obj = 새 엔터티();
obj.Id = 1;
obj.Name = "테스트";
obj.Price = 3.23;
목록.추가(obj);
이런 방식으로 List
public static string Serialize
{
XmlDocument 결과 = new XmlDocument();
result.LoadXml("
foreach(GenericList의 BusinessObject obj)
{
XmlElement Item = result.CreateElement("Item");
PropertyInfo[] 속성 = obj.GetType().GetProperties();
foreach(속성의 PropertyInfo 속성)
{
if (property.GetValue(obj, null) != null)
{
XmlElement 요소 = result.CreateElement(property.Name);
element.SetAttribute("Type", property.PropertyType.Name);
element.InnerText = property.GetValue(obj, null).ToString();
Item.AppendChild(요소);
}
}
result.DocumentElement.AppendChild(Item);
}
결과를 반환합니다.InnerXml;
}
문자열을 str = Serialize
라고 부릅니다
.
생성된 XML 파일은 다음과 같습니다.
<아이템>
항목>
루트>
다음으로 위에서 생성된 xml 파일을 역직렬화하고 방금 List
public static List
{
List
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.LoadXml(XmlStr);
foreach(XmlDoc.GetElementsByTagName("Root").Item(0).ChildNodes의 XmlNode ItemNode)
{
BusinessObject 항목 = Activator.CreateInstance
PropertyInfo[] 속성 = typeof(BusinessObject).GetProperties();
foreach(ItemNode.ChildNodes의 XmlNode propertyNode)
{
문자열 이름 = propertyNode.Name;
문자열 유형 = propertyNode.Attributes["Type"].Value;
문자열 값 = propertyNode.InnerXml;
foreach(속성의 PropertyInfo 속성)
{
if (이름 == 속성.이름)
{
property.SetValue(item,Convert.ChangeType(value,property.PropertyType), null);
}
}
}
결과.추가(항목);
}
결과 반환;
}
그런 다음 이 메서드를 호출합니다.
List
끝났습니다.
이 글에서는 List<> 객체를 직렬화하는 간단한 방법만 소개합니다. 상황에 맞게 활용하세요.
http://www.cnblogs.com/kchen/archive/2006/11/04/550382.html