张德长

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

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>

运行结果

posted on   张德长  阅读(31)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示