C# 讀取和解析 XML 檔案

Minahil Noor 2023年12月11日
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