사전으로 직렬화 및 역직렬화
빈 Dictionary
<items> <item>
제공된 키와 값으로 사전을 채우고 이를 다시 XML로 직렬화하는 작업은 XElement를 사용하지 않고도 수행할 수 있습니다.
역직렬화
임시 항목 클래스는 다음과 같습니다. 소개:
public class item { [XmlAttribute] public int id; [XmlAttribute] public string value; }
예제 사전은 다음과 같이 선언할 수 있습니다.
Dictionary<int, string> dict = new Dictionary<int, string>() { {1,"one"}, {2,"two"} };
XML을 사전으로 역직렬화하려면 XmlSerializer 개체를 만듭니다.
XmlSerializer serializer = new XmlSerializer(typeof(item[]), new XmlRootAttribute() { ElementName = "items" });
그런 다음 역직렬화 프로세스를 수행할 수 있습니다. 수행됨:
var orgDict = ((item[])serializer.Deserialize(stream)) .ToDictionary(i => i.id, i => i.value);
직렬화
사전을 다시 XML로 직렬화하려면 다음 단계를 따르세요.
serializer.Serialize(stream, dict.Select(kv=>new item(){id = kv.Key,value=kv.Value}).ToArray() );
대안: XElement 사용(만약 선호)
XElement를 선호하는 경우 다음 접근 방식을 사용할 수 있습니다.
직렬화
XElement xElem = new XElement( "items", dict.Select(x => new XElement("item",new XAttribute("id", x.Key),new XAttribute("value", x.Value))) ); var xml = xElem.ToString(); //xElem.Save(...);
역직렬화
XElement xElem2 = XElement.Parse(xml); //XElement.Load(...) var newDict = xElem2.Descendants("item") .ToDictionary(x => (int)x.Attribute("id"), x => (string)x.Attribute("value"));
위 내용은 XElement를 사용하지 않고 사용자 지정 XML에서 사전을 직렬화 및 역직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!