C# 读取和解析 XML 文件

Minahil Noor 2020年6月25日 2020年6月9日
C# 读取和解析 XML 文件

在 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