C# 读取和解析 XML 文件
Minahil Noor
2024年2月16日
在 C# 中,System.Xml
名称空间用于处理 XML
文件。它具有不同的类和方法来处理 XML 文件。我们可以使用该命名空间读取,解析和写入 XML 文件。
在本文中,我们将讨论用于读取和解析 XML 文件的不同方法。
使用 XmlReader 类读取和解析 XML 文件的 C# 程序
C# 中的 XmlReader
类提供了一种访问 XML 数据的有效方法。XmlReader.Read()
方法读取 XML 文件的第一个节点,然后使用 while
循环读取整个文件。
此方法的正确语法如下:
XmlReader VariableName = XmlReader.Create(@"filepath");
while (reader.Read()) {
// Action to perform repeatidly
}
我们已经在程序中读取并解析的 XML 文件如下。复制此代码并将其粘贴到新的文本文件中,并将其另存为 .xml
,以使用该文件执行以下给出的程序。
<?xml version="1.0" encoding="utf-8"?>
<Students>
<Student>
</Student>
<Student>
<Name>Olivia</Name>
<Grade>A</Grade>
</Student>
<Student>
<Name>Laura</Name>
<Grade>A+</Grade>
</Student>
<Student>
<Name>Ben</Name>
<Grade>A-</Grade>
</Student>
<Student>
<Name>Henry</Name>
<Grade>B</Grade>
</Student>
<Student>
<Name>Monica</Name>
<Grade>B</Grade>
</Student>
</Students>
示例代码:
using System;
using System.Xml;
namespace XMLReadAndParse {
class XMLReadandParse {
static void Main(string[] args) {
// Start with XmlReader object
// here, we try to setup Stream between the XML file nad xmlReader
using (XmlReader reader = XmlReader.Create(@"d:\Example.xml")) {
while (reader.Read()) {
if (reader.IsStartElement()) {
// return only when you have START tag
switch (reader.Name.ToString()) {
case "Name":
Console.WriteLine("The Name of the Student is " + reader.ReadString());
break;
case "Grade":
Console.WriteLine("The Grade of the Student is " + reader.ReadString());
break;
}
}
Console.WriteLine("");
}
}
Console.ReadKey();
}
}
}
在这里,我们创建了一个 XmlReader
对象,然后使用 Create()
方法创建了给定 XML 文件的阅读器流。
然后,我们使用了 XmlReader.Read()
方法来读取 XML 文件。该方法返回一个 bool
值,该值指示我们创建的流是否包含 XML
语句。
之后,我们使用 XmlReader.IsStartElement()
方法检查是否有任何起始元素。因为我们在 XML 数据中有两个元素字段,所以我们使用了 switch
语句通过 ReadString()
方法从两个字段中读取数据。
输出:
The Name of the Student is Olivia
The Grade of the Student is A
The Name of the Student is Laura
The Grade of the Student is A+
The Name of the Student is Ben
The Grade of the Student is A-
The Name of the Student is Henry
The Grade of the Student is B
The Name of the Student is Monica
The Grade of the Student is B