XML学习笔记--未完待续
XML文档创建流程图
创建、读取XML过程详解
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <students> <student 姓名="刘小强-0" 学号="10000"> <语文成绩>59</语文成绩> <数学成绩>54</数学成绩> <外语成绩>93</外语成绩> </student> <student 姓名="刘小强-1" 学号="10001"> <语文成绩>86</语文成绩> <数学成绩>91</数学成绩> <外语成绩>94</外语成绩> </student> <student 姓名="刘小强-2" 学号="10002"> <语文成绩>92</语文成绩> <数学成绩>92</数学成绩> <外语成绩>62</外语成绩> </student> <student 姓名="刘小强-3" 学号="10003"> <语文成绩>91</语文成绩> <数学成绩>85</数学成绩> <外语成绩>61</外语成绩> </student> <student 姓名="刘小强-4" 学号="10004"> <语文成绩>87</语文成绩> <数学成绩>71</数学成绩> <外语成绩>71</外语成绩> </student> <student 姓名="刘小强-5" 学号="10005"> <语文成绩>71</语文成绩> <数学成绩>79</数学成绩> <外语成绩>81</外语成绩> </student> <student 姓名="刘小强-6" 学号="10006"> <语文成绩>59</语文成绩> <数学成绩>77</数学成绩> <外语成绩>51</外语成绩> </student> <student 姓名="刘小强-7" 学号="10007"> <语文成绩>65</语文成绩> <数学成绩>86</数学成绩> <外语成绩>78</外语成绩> </student> <student 姓名="刘小强-8" 学号="10008"> <语文成绩>57</语文成绩> <数学成绩>61</数学成绩> <外语成绩>57</外语成绩> </student> <student 姓名="刘小强-9" 学号="10009"> <语文成绩>72</语文成绩> <数学成绩>88</数学成绩> <外语成绩>85</外语成绩> </student> </students>
|
创建XML文档流程详解: 1、创建XML文档类 XmlDocument doc = new XmlDocument(); 2、通过doc创建文档元素 ●通过doc创建文档声明 XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "UTF-8", "yes"); ●通过AppendChild方法添加文档声明 doc.AppendChild(declaration); ●创建根节点 XmlElement root = doc.CreateElement("students"); ●添加根节点(XmlElement继承自XmlNode,里氏替换原则) doc.AppendChild(root); 3、二级子节点(根节点为一级节点) ●创建二级子节点 XmlElement element1 = doc.CreateElement("student"); root.AppendChild(element1); ●添加二级子节点(继承自XmlNode的AppendChild方法) root.AppendChild(element1); ●二级子节点属性设置SetAttribute方法 element1.SetAttribute("姓名", $"刘小强-{i}"); element1.SetAttribute("学号", (10000 + i).ToString()); 4、三级子节点 ●创建三级子节点 XmlElement element1_1 = doc.CreateElement("语文成绩"); ●添加三级子节点 element1.AppendChild(element1_1); ●设置三级子节点的内容InnerText element1_1.InnerText = random.Next(50, 100).ToString(); 5、循环创建多个节点并保存XML文档 doc.Save("students.xml");
读取XML文档流程详解: 1、创建XML文档类 XmlDocument doc = new XmlDocument(); 2、加载XML文档 doc.Load("students.xml"); 3、获取根节点 XmlNode root = doc.SelectSingleNode("students"); 4、获取二级子节点列表XmlNodeList XmlNodeList list = root.ChildNodes; 5、循环遍历二级子节点列表XmlNodeList ●列表元素转型为XmlElement(为了使用XmlElement的GetAttribute方法) XmlElement element = node as XmlElement; ●获取二级子节点属性 string name = element.GetAttribute("姓名"); string no = element.GetAttribute("学号"); 6、获取三级子节点列表XmlNodeList XmlNodeList childList = node.ChildNodes; 7、循环遍历三级子节点列表XmlNodeList (如果不会使用GetAttribute方法,也可以直接用XmlNode类型,而不用转型) XmlElement childElement = childNode as XmlElement; 8、获取三级子节点的InnerText ●(转型的) string score = childElement.Name + ":" + childElement.InnerText; ●或者(不转型的) string score = childNode.Name + ":" + childNode.InnerText;
|
创建XML文档代码
/// <summary> /// 创建XML文档 /// </summary> public void CreateXmlDocument(ListBox listBox) { listBox.Items.Clear(); Random random = new Random(); XmlDocument doc = new XmlDocument(); XmlDeclaration declaration = doc.CreateXmlDeclaration("1.0", "UTF-8", "yes"); doc.AppendChild(declaration); XmlElement root = doc.CreateElement("students"); doc.AppendChild(root); for (int i = 0; i < 10; i++) { listBox.Items.Add($"添加:刘小强-{i}"); XmlElement element1 = doc.CreateElement("student"); root.AppendChild(element1); element1.SetAttribute("姓名", $"刘小强-{i}"); element1.SetAttribute("学号", (10000 + i).ToString()); XmlElement element1_1 = doc.CreateElement("语文成绩"); element1.AppendChild(element1_1); element1_1.InnerText = random.Next(50, 100).ToString(); XmlElement element1_2 = doc.CreateElement("数学成绩"); element1.AppendChild(element1_2); element1_2.InnerText = random.Next(50, 100).ToString(); XmlElement element1_3 = doc.CreateElement("外语成绩"); element1.AppendChild(element1_3); element1_3.InnerText = random.Next(50, 100).ToString(); } doc.Save("students.xml"); listBox.Items.Add("----------"); listBox.Items.Add("创建成功..."); }
读取XML文档代码
/// <summary> /// 读取XML文档 /// </summary> public void ReadXmlDocument(ListBox listBox) { listBox.Items.Clear(); if (!File.Exists("students.xml")) return; XmlDocument doc = new XmlDocument(); doc.Load("students.xml"); XmlNode root = doc.SelectSingleNode("students"); XmlNodeList list = root.ChildNodes; foreach (XmlNode node in list) { XmlElement element = node as XmlElement; string name = element.GetAttribute("姓名"); listBox.Items.Add("姓名:"+name); string no = element.GetAttribute("学号"); listBox.Items.Add("学号:"+no); XmlNodeList childList = node.ChildNodes; foreach (var childNode in childList) { XmlElement childElement = childNode as XmlElement; string score = childElement.Name + ":" + childElement.InnerText; listBox.Items.Add(score); } listBox.Items.Add("----------"); } listBox.Items.Add("----------"); listBox.Items.Add("读取成功..."); } }
创建出的XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <students> <student 姓名="刘小强-0" 学号="10000"> <语文成绩>59</语文成绩> <数学成绩>54</数学成绩> <外语成绩>93</外语成绩> </student> <student 姓名="刘小强-1" 学号="10001"> <语文成绩>86</语文成绩> <数学成绩>91</数学成绩> <外语成绩>94</外语成绩> </student> <student 姓名="刘小强-2" 学号="10002"> <语文成绩>92</语文成绩> <数学成绩>92</数学成绩> <外语成绩>62</外语成绩> </student> <student 姓名="刘小强-3" 学号="10003"> <语文成绩>91</语文成绩> <数学成绩>85</数学成绩> <外语成绩>61</外语成绩> </student> <student 姓名="刘小强-4" 学号="10004"> <语文成绩>87</语文成绩> <数学成绩>71</数学成绩> <外语成绩>71</外语成绩> </student> <student 姓名="刘小强-5" 学号="10005"> <语文成绩>71</语文成绩> <数学成绩>79</数学成绩> <外语成绩>81</外语成绩> </student> <student 姓名="刘小强-6" 学号="10006"> <语文成绩>59</语文成绩> <数学成绩>77</数学成绩> <外语成绩>51</外语成绩> </student> <student 姓名="刘小强-7" 学号="10007"> <语文成绩>65</语文成绩> <数学成绩>86</数学成绩> <外语成绩>78</外语成绩> </student> <student 姓名="刘小强-8" 学号="10008"> <语文成绩>57</语文成绩> <数学成绩>61</数学成绩> <外语成绩>57</外语成绩> </student> <student 姓名="刘小强-9" 学号="10009"> <语文成绩>72</语文成绩> <数学成绩>88</数学成绩> <外语成绩>85</外语成绩> </student> </students>
运行结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律