分享
 
 
 

应用

王朝学院·作者佚名  2016-05-21
窄屏简体版  字體: |||超大  

小学生之解析xml应用1.什么是XML?

解析:XML:ExtensibleMarkupLanguage(可扩展标记语言)

HTML:HyperLinkTextMarkupLanguage(超文本标记语言)

2. xml文件和html文件的区别?

解析:01.xml严格区分大小写,html不区分

02.xml不是编译语言,xml和html都是解释型语言

03.html语言负责显示数据,而Xml文件就是专门用来存储数据

注:如果我们在书写xml文件的时候,如果自己用的encoding="utf-8"出现问题,那么试着切成gb2312

3.xml书写注意点

1.xml文件严格区分大小写2.标签配对出现3.xml文档只能有一个根节点4.我们自定义xml文档中的标签

4.解析xml文件

解析:01.做一个xml文档

02.copy到debug目录下

03.创建一个XmlDocument对象Ctrl+.导入命名空间

04.调用doc.Load(“路径”)

05.拿到根节点XmlNoderoot=doc.DocumentElement;

06.用foreach来获取子节点内容

5.问题记录

01.Load(stringfilename):绝对路径:"D:\123\Singer.xml"

02.item.Name指定的是<内容>,item.InnerText指的是<>内容</>

6.练习

需求说明 单击电视台频道节点,DataGridView显示频道对应节目单

主要代码如下:

1 //电视节目类 2 public class TvPRogram 3 { 4 //播出时间 5 public DateTime PlayTime { get; set; } 6 7 //时段 8 public string Median { get; set; } 9 //节目名称10 public string ProgramName { get; set; }11 //节目文件路劲12 public string FilePath { get; set; }13 }

1 //频道类2 public abstract class ChannelBase3 {4 public string channelName;//频道名称5 public string path;//频道路劲6 public List<TvProgram> programList;//节目列表7 //解析频道节目信息8 public abstract void Fetch();9 }

1 //TypeA类频道类 2 public class TypeAChannel:ChannelBase 3 { 4 public TypeAChannel() { } 5 6 7 public override void Fetch() 8 { 9 XmlDocument doc = new XmlDocument();10 doc.Load(path);11 if (programList==null)12 {13 programList=new List<TvProgram>();14 }15 XmlNode root = doc.DocumentElement;16 foreach (XmlNode item in root.ChildNodes)17 {18 if (item.Name=="tvProgramTable")19 {20 foreach (XmlNode child in item.ChildNodes)21 {22 TvProgram program = new TvProgram();23 program.PlayTime = Convert.ToDateTime(child["playTime"].InnerText);24 program.Median = child["meridien"].InnerText;25 program.ProgramName = child["programName"].InnerText;26 program.FilePath = child["path"].InnerText;27 this.programList.Add(program);28 }29 }30 }31 }32 }

1 //频道B类 2 public class TypeBChannel:ChannelBase 3 { 4 5 public override void Fetch() 6 { 7 XmlDocument doc = new XmlDocument(); 8 doc.Load(path); 9 if (programList == null)10 {11 programList = new List<TvProgram>();12 }13 XmlNode root = doc.DocumentElement;//解析XMl文件并填充数据14 foreach (XmlNode item in root.ChildNodes)15 {16 if (item.Name == "ProgramList")17 {18 foreach (XmlNode child in item.ChildNodes)19 {20 TvProgram program = new TvProgram();21 program.PlayTime = Convert.ToDateTime(child["playTime"].InnerText);22 program.FilePath = child["path"].InnerText;23 program.ProgramName = child["name"].InnerText;24 this.programList.Add(program);25 }26 }27 }28 }29 }

1 //工厂操作类 2 public class ChannelManager 3 { 4 public Dictionary<string, ChannelBase> dic = new Dictionary<string, ChannelBase>();//存储频道名称和该频道中的节目信息 5 public void LoadtvChannel() 6 { 7 XmlDocument doc = new XmlDocument(); 8 doc.Load("files/FullChannels.xml"); 9 XmlNode node = doc.DocumentElement;10 foreach (XmlNode item in node.ChildNodes)11 {12 ChannelBase channel = CreateChannel(item["channelType"].InnerText);//创建频道A或者B对象13 channel.channelName = item["tvChannel"].InnerText;//获取XML中频道名称14 channel.path = item["path"].InnerText;//获取XML中存储的相应频道节目路劲15 dic.Add(channel.channelName,channel);16 }17 }18 //创建类的实例19 public ChannelBase CreateChannel(string type)20 {21 ChannelBase channel = null;22 switch (type)23 {24 case"TypeA":25 channel = new TypeAChannel();26 break;27 case"TypeB":28 channel = new TypeBChannel();29 break;30 default:31 break;32 }33 return channel;34 }35 }

1 //创建ChannelManagement类对象 2 ChannelManager manager = new ChannelManager(); 3 //加载TreeView中的数据 4 private void LoadTreeView() 5 { 6 TreeNode nodeFristLevel = new TreeNode("我的电视台"); 7 this.tvChannel.Nodes.Add(nodeFristLevel); 8 TreeNode allnode = new TreeNode("所有电视台"); 9 TreeNode node = null;10 manager.LoadtvChannel();11 //循环给“所有电视台”添加子节点12 foreach (ChannelBase item in manager.dic.Values)13 {14 node = new TreeNode(item.channelName);15 node.Tag = item;//保存ChannelBse对象16 allnode.Nodes.Add(node); 17 }18 this.tvChannel.Nodes.Add(allnode);19 }20 private void Form1_Load(object sender, EventArgs e)21 {22 //皮肤设置23 skinEngine1.SkinFile = "MSN.ssk";24 //调用方法25 LoadTreeView();26 27 }28 //TreeView点击后事件29 private void tvChannel_AfterSelect(object sender, TreeViewEventArgs e)30 {31 if (this.tvChannel.SelectedNode.Level==1)//判断深度为132 {33 ChannelBase channel = (ChannelBase)tvChannel.SelectedNode.Tag;34 if (channel.programList != null)//清空List<T>集合中的数据35 {36 channel.programList.Clear();37 }38 channel.Fetch();39 this.dgvProgList.DataSource = channel.programList;//绑定数据源40 }41 42 }

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有