首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

读取XML数据的有关问题

2012-04-05 
读取XML数据的问题XML code?xml version1.0 encodingutf-8 ?ItemsMenuItem Text分类MenuI

读取XML数据的问题

XML code
<?xml version="1.0" encoding="utf-8" ?><Items>  <MenuItem Text="分类">    <MenuItem Text="瓷器" IsEnabled="false"/>    <MenuItem Text="青铜器" IsEnabled="false"/>    <MenuItem Text="玉器"/>    <MenuItem Text="陶器"/>  </MenuItem>  <MenuItem Text="年代">    <MenuItem Text="西周"/>    <MenuItem Text="汉代"/>    <MenuItem Text="唐代"/>    <MenuItem Text="宋代" IsEnabled="false"/>    <MenuItem Text="元代"/>    <MenuItem Text="明代"/>    <MenuItem Text="清代" IsEnabled="false"/>  </MenuItem></Items>

C# code
    public class MenuItem    {        private bool isEnabled = true;        private string text;        private List<MenuItem> children;        public string Text        {            get            {                return this.text;            }            set            {                this.text = value;            }       }        public bool IsEnabled        {            get            {                return this.isEnabled;            }            set            {                this.isEnabled = value;            }        }        public List<MenuItem> Children        {            get            {                return this.children;            }            set            {                this.children = value;            }        }    }


我用的是WebClient的OpenReadAsync方法
C# code
        void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)        {            List<MenuItem> mi = new List<MenuItem>();            MenuItem CurrentItem = null;            XmlReader reader = XmlReader.Create(e.Result);            while (reader.Read())            {                if (reader.NodeType == XmlNodeType.Element && reader.Name == "MenuItem")                {                    CurrentItem = new MenuItem();                    ................                }            }        }


我现在的问题是 不知道中间省略号那部分 该怎么写了 才能把上面的XML全部放到一个名叫mi的List<MenuItem>集合中

[解决办法]
搜一下linq to xml,很简单的
[解决办法]
如果子代的层次是无限的,使用递归,
如果子代的层次像楼主的例子中只有2层,硬编码也可以解决。

使用 LINQ to XML 或者 XML 都可以实现,推荐使用前者。

XElement root = XElement.Parse(e.Result);
[解决办法]

xml转换为对象 建议楼主使用 序列化,反序列化
很方便。

Silverlight中的对象序列化/反序列化

http://www.silverlightchina.net/html/tips/2010/0222/744.html
http://www.silverlightchina.net/html/tips/2010/0222/743.html
http://www.silverlightchina.net/html/tips/2010/0328/921.html
http://silverlightchina.net/html/developer/2009/1223/457.html

热点排行