'XmlSerializer, csharp, wp7'에 해당되는 글 1건

  1. 2010.05.27 [wp7] XmlSerializer 사용하기
Windows Phone 72010. 5. 27. 11:37

ㅋㅋ 해보니 별로 어려운게 아니다.



일단 큰것을 위해 샘플을 만들었다..



일단 C#이랑 중복되니 c# 부터 하겠다.



테스트를 위해



이런 xml을 하나 생성하고?



<?xml version="1.0" encoding="utf-16" ?>

<ArticleData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<ename>0</ename>

<sign>33</sign>

</ArticleData>



그리고 이걸 저장할 클래스를 하나 만든다.

public class ArticleData

{

[XmlElement]

public string ename { get; set; }



[XmlElement]

public string sign { get; set; }

}

}



코드에는

using (var reader = new StreamReader(@"d:\util\test2.xml"))

{

XmlSerializer xs = new XmlSerializer(typeof(ArticleData));

  var temp = (ArticleData)xs.Deserialize(reader);

  }



이렇게 한다.

그렇게 되면 temp 에 데이터가 저장이 되게 된다.



정말 심플하다... 



중요한건 xml에 상단에



<ArticleData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">



이렇게 되있는데 



클래스 이름을 꼭 ArticleData로 해야된다는 점이다..



그래야 직렬화가 된다.



c#은 끝냈으니 이제 wp7(실버라이트) 에서 해보자



웹기반이니



 var xmlWebPathUri = new Uri("http://api.finance.xaviermedia.com/api/latest.xml", UriKind.Absolute);

WebClient client = new WebClient();

client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);

client.DownloadStringAsync(xmlWebPathUri);




이런식으로 외부로부터 xml을 가져와서



 void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)

{

StringReader _stream = new StringReader(e.Result);

XmlReader _reader = XmlReader.Create(_stream);



System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(xavierresponse));

  var temp = (xavierresponse)xs.Deserialize(_reader);



}



xavierresponse 이것이 xml 페이지  상단 이름이다 xml을 분석해서 클래스를 만들자~











Posted by 동동(이재동)