很久没碰XML文件读写了,今天帮朋友写了一个相关的读取XML文件的操作类,封装成dll便于使用。
先说下需求吧:
A:在XML文件中有多个集,每个集里面包含多个节点。
B:可根据集的名字的取出这个集合下面的所有节点值
C:可一次性取出所有的节点值
D:其中有一个是无限拓展的就是:表达式
E:把集合读取到一个模型(实体类)当中
先来看下XML文件结构的分析如下(我用红色方块勾出区域划分):
这里既3个区域(3个集合)。
实际使用效果:
要实现上面的效果,封装好了之后是很简单的。
一行代码即可获得数据。
以下是读取XML内容的代码片段:
//获取所有指令名 填充到控件 private void btn_getNames_Click(object sender, EventArgs e) { string[] names = xmlOpt.CommandNames; foreach (string str in names) { lst_names.Items.Add(str); } } //获取所有指令 填充到控件 private void btn_commands_Click(object sender, EventArgs e) { foreach (XmlCommandModel model in xmlOpt.GetCommandModelList) { txt_commands.Text += model.CommandName + "\r\n"; txt_commands.Text += model.CommandValue + "\r\n"; txt_commands.Text += model.CommandString + "\r\n"; foreach (string str in model.CommandPuts) { txt_commands.Text += str + "\r\n"; } } } //统计指令信息 private void btn_count_Click(object sender, EventArgs e) { txt_count.Text += "一共:" + xmlOpt.commandCout + "条指令" + "\r\n"; txt_count.Text += "目标路径:" + xmlOpt.FilePath + "\r\n"; } //根据指令名 获取一个指定的指令 填充到控件 private void btn_GetByName_Click(object sender, EventArgs e) { txt_GetByName.Text = ""; XmlCommandModel myModel = xmlOpt.GetCommandModelByName(txt_name.Text); txt_GetByName.Text += myModel.CommandName + "\r\n"; txt_GetByName.Text += myModel.CommandValue + "\r\n"; txt_GetByName.Text += myModel.CommandString + "\r\n"; foreach (string put in myModel.CommandPuts) { txt_GetByName.Text += put + "\r\n"; } }
很简单吧,看着很多,其实都是在使用。
提取都是一句话的事情啦。
该例子的完整代码下载地址:
参考: