经典论坛's Archiver

nasawz 发表于 2008-4-8 11:31

Silverlight读取xml

这例子是为我的试验项目"SLShowCase"做的读取xml的试验.看到有朋友做到[url=http://www.cnblogs.com/ithurricane/archive/2008/04/07/1139459.html]仿163幻灯片的demo[/url]就提前发上来了.
项目的功能是做案例展示.
ok  首先,先定义xml.
projects.xml
[code]<?xml version="1.0" encoding="utf-8" ?>
<projects>
  <project id="1" title="nasa.wang @ cnblogs" category="web" hit="23" createdate="2008-4-9" converpic="null" iscommend="true" votenum="8" score="10">
  </project>
</projects>[/code]
在sl中定义类.
   [code]
public class project
    {
        public int id { get; set; }
        public string title { get; set; }
        public string category { get; set; }
        public int hit { get; set; }
        public DateTime createdate { get; set; }
        public string converpic { get; set; }
        public bool iscommend { get; set; }
        public int votenum { get; set; }
        public int score { get; set; }
        //public IList<pitem> pitems { get; set; }
        //public IList<pcomment> pcomments { get; set; }
    }[/code]
使用WebClient来加载数据.linq来格式化数据.
[code]
       public Page()
        {
            InitializeComponent();
            WebClient client = new WebClient();
            client.DownloadStringAsync(new Uri(HtmlPage.Document.DocumentUri, "projects.xml"));
            client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
        }

        void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            XmlReader reader = XmlReader.Create(new StringReader(e.Result));
            XDocument document = XDocument.Load(reader);
            var projects = from f in document.Descendants("project")
                           select new project
                           {
                               id = int.Parse(f.Attribute("id").Value),
                               title = f.Attribute("title").Value,
                               category = f.Attribute("category").Value,
                               hit = int.Parse(f.Attribute("hit").Value),
                               createdate = DateTime.Parse(f.Attribute("createdate").Value),
                               converpic = f.Attribute("converpic").Value,
                               iscommend = bool.Parse(f.Attribute("iscommend").Value),
                               votenum = int.Parse(f.Attribute("votenum").Value),
                               score = int.Parse(f.Attribute("score").Value),
                           };
            List<project> _projects = new List<project>();
            _projects.AddRange(projects);
            txtStatus.Text ="read success for " + _projects[0].title;
        }[/code]

读取完毕.  ;)

代码下载:http://www.cnblogs.com/Files/nasa/silverlight/readxmlfile.zip

页: [1]



Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.