Visual C# を使用して、ファイルから XML を読み取る方法

文書翻訳 文書翻訳
文書番号: 307548 - 対象製品
この記事は、以前は次の ID で公開されていました: JP307548
すべて展開する | すべて折りたたむ

目次

概要

この資料では、 XmlTextReaderクラスを使用して、拡張マークアップ言語 (XML) ファイルからの読み取り方法について説明します。XmlTextReaderは、直接解析および XML と実装、XML 1.0 仕様の名前空間から World Wide Web コンソーシアム (W3C) XML 仕様のトークン化を提供します。この資料など、XML ドキュメント オブジェクト モデル (DOM) オブジェクト モデルを使用するのではなく、XML ストリームを高速でトークン化されたアクセスを提供します。

要件

推奨されるハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、および必要な service pack は次のとおりです。
  • Microsoft Visual Studio 2005年または Microsoft Visual Studio .NET
この資料では、次のトピックに精通していることを前提としています。
  • XML の用語集
  • 作成し、XML ファイルの読み取り

ファイルから XML を読み取る方法

次の使用例は Books.xml という名前のファイルを使用します。Books.xml ファイルを作成または .NET ソフトウェア開発キット (SDK) のクイック スタートで次のフォルダーに含まれているサンプル ファイルを使用することができます。
\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Samples\QuickStart\Howto\Samples\Xml\Transformxml\Cs
Books.xml をこのプロジェクトの作成、フォルダーの下にある \Bin\Debug フォルダーにコピーする必要があります。Books.xml もダウンロード可能です。参照してください、」参照[ダウンロード先セクション。
  1. Visual Studio 2005 または Visual Studio .NET を起動します。
  2. 新しい Visual C# コンソール アプリケーションを作成します。直接に進んで、"完全なコード リスト「セクションまたはアプリケーションをビルドするのには、以下手順を続行します。
  3. プロジェクトに使用アセンブリへの参照が含まれているかどうかを確認します。
  4. コードの後半でXmlTextReaderの宣言を修飾する必要はありませんようにSystem.Xml名前空間のusingディレクティブを指定します。Usingディレクティブはすべての宣言の前に使用する必要があります。
    using System.Xml;
    					
  5. XmlTextReaderオブジェクトのインスタンスを作成し、XML ファイルを作成します。通常、XML DOM のオーバーヘッドの生のデータにアクセスする必要がある場合は、 XmlTextReaderクラスが使用されます。したがって、 XmlTextReaderクラスは、XML を読み取るためより高速なメカニズムを提供します。XmlTextReaderクラスは、XML データの場所を指定するには、さまざまなコンス トラクターがあります。次のコードは、 XmlTextReaderクラスのインスタンスを作成し、Books.xml ファイルを読み込みます。次のコードは、Class1 の Main プロシージャに追加します。
    XmlTextReader reader = new XmlTextReader ("books.xml");
    					
  6. XML 全体を参照してください。(この手順は外側の"while"ループを示しています、次の 2 つの手順をループを使用して XML を読み取る方法をデモンストレーションを注意してください)。XmlTextReaderオブジェクトを作成した後、 Readメソッドを使用して XML データを読み取る。Readメソッドは、ファイルの末尾には、読み取りメソッドが返す値"False"というをポイントになるまで、XML ファイル全体を順に移動し続けます
    while (reader.Read()) 
    {
        // Do some work here on the data.
    	Console.WriteLine(reader.Name);
    }
    Console.ReadLine();
    					
  7. ノードを調べます。XML データを処理するには、各レコードはNodeTypeプロパティから判断できるノードの種類を持っています。名前のプロパティはノード名 (要素と属性名) と、現在のノード (またはレコード) のノード値 (ノード テキスト) を返します。Valueノードの種類を指定します。次のサンプル コードでの要素とドキュメントの種類の名前が表示されます。このサンプルの要素の属性を無視することに注意してください。
    while (reader.Read()) 
    {
        switch (reader.NodeType) 
        {
            case XmlNodeType.Element: // The node is an element.
                Console.Write("<" + reader.Name);
       Console.WriteLine(">");
                break;
      case XmlNodeType.Text: //Display the text in each element.
                Console.WriteLine (reader.Value);
                break;
      case XmlNodeType. EndElement: //Display the end of the element.
                Console.Write("</" + reader.Name);
       Console.WriteLine(">");
                break;
        }
    }
    					
  8. 属性を調べます。要素のノード型に関連付けられた属性ノードのリストを含めることができます。MovetoNextAttributeメソッドは各要素の属性を順番に移動します。任意の属性ノードを持つかどうかをテストするのには、 HasAttributesプロパティを使用します。AttributeCountプロパティは、現在のノードの属性の数を返します。
    while (reader.Read()) 
    {
           switch (reader.NodeType) 
           {
               case XmlNodeType.Element: // The node is an element.
                   Console.Write("<" + reader.Name);
    
                   while (reader.MoveToNextAttribute()) // Read the attributes.
                       Console.Write(" " + reader.Name + "='" + reader.Value + "'");
          Console.WriteLine(">");
                   break;
         case XmlNodeType.Text: //Display the text in each element.
                   Console.WriteLine (reader.Value);
                   break;
         case XmlNodeType. EndElement: //Display the end of the element.
                   Console.Write("</" + reader.Name);
          Console.WriteLine(">");
                   break;
           }
       }
    					
  9. 保存して、プロジェクトを閉じます。

完全なコード リスト

using System;
using System.Xml;

namespace ReadXMLfromFile
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class Class1
    {
        static void Main(string[] args)
        {
            XmlTextReader reader = new XmlTextReader ("books.xml");
            while (reader.Read()) 
            {
                switch (reader.NodeType) 
                {
                    case XmlNodeType.Element: // The node is an element.
                        Console.Write("<" + reader.Name);
                        Console.WriteLine(">");
                        break;
                    case XmlNodeType.Text: //Display the text in each element.
                        Console.WriteLine (reader.Value);
                        break;
                    case XmlNodeType.EndElement: //Display the end of the element.
                        Console.Write("</" + reader.Name);
                        Console.WriteLine(">");
                        break;
                }
            }
            Console.ReadLine();
        }
    }
}
				

サンプルの出力

<bookstore>
<book>
<title>
The Autobiography of Benjamin Franklin
</title>
<author>
<first-name>
Benjamin
</first-name>
<last-name>
Franklin
</last-name>
</author>
<price>
8.99
</price>
</book>
<book>
<title>
The Confidence Man
</title>
<author>
<first-name>
Herman
</first-name>
<last-name>
Melville
</last-name>
</author>
<price>
11.99
</price>
</book>
<book>
<title>
The Gorgias
</title>
<author>
<name>
Plato
</name>
</author>
<price>
9.99
</price>
</book>
</bookstore>
				

トラブルシューティング

コードをテストすると、次の例外エラー メッセージが表示されることがあります: ハンドルされていない例外: System.Xml.XmlException: 予期しない XML 宣言します。XML 宣言はドキュメントの最初のノードにする必要があり、ホワイト スペース文字の前にそれを表示する許可されません。

追加情報: システム エラー。コードの次の行に、例外エラーを発生: 中
(reader.Read())
例外エラーは、無効な処理命令が発生します。たとえば、処理命令が正しくない可能性があります。無効な処理命令の例を次に示します。
<?xml version='1.0' ?>
この xml タグは、上記のスペースが、'<’ bracket.="" remove="" the="" preceding="" whitespace="" to="" resolve="" the="" error.=""></’>

参照

次のファイルは、Microsoft ダウンロード センターからダウンロード可能です :
元に戻す画像を拡大する
ダウンロード
Books.exe パッケージします。
.NET Framework の XML クラスおよび C# の詳細については、次の Microsoft Developer Network (MSDN) Web サイトを参照してください。
http://msdn.microsoft.com/en-us/magazine/cc302158.aspx
XmlReaderクラスの詳細については、次の MSDN Web サイトを参照してください。
.aspx の http://msdn2.microsoft.com/en-us/library/system.xml.xmlreader (vs.71)
XML データの読み取りにXmlReaderを使用する方法の詳細については、次の MSDN Web サイトを参照してください。
.aspx の http://msdn2.microsoft.com/en-us/library/aa720470 (VS.71)

.aspx の http://msdn2.microsoft.com/en-us/library/tfz3cz6w (vs.71)

プロパティ

文書番号: 307548 - 最終更新日: 2012年12月23日 - リビジョン: 3.0
この資料は以下の製品について記述したものです。
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
キーワード:?
kbdownload kbhowtomaster kbmt KB307548 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:307548
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com