C# で XML ファイルの読み取りと解析

Minahil Noor 2024年2月16日
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 ファイルを読み取りました。このメソッドは、作成されたストリームに XML ステートメントが含まれているかどうかを示す bool 値を返します。

その後、XmlReader.IsStartElement() メソッドを使用して開始要素があるかどうかを確認しました。XML データには 2つの要素フィールドがあるため、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