Visual C# .net で System.Xml を使用する 2 つの XML ドキュメントからデータをマージするには、方法

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

目次

概要

この資料では、 DataSetオブジェクトを使用して、2 つの XML 文書をマージする方法を示しています。DataSetオブジェクトがサポートする中心的な切断でシナリオと ADO.NET を配布しました。データセットはデータ ソースに関係なく、一貫性のある、リレーショナル プログラミング モデルを提供するデータのメモリ常駐表現です。DataSetは関連テーブル、制約、およびテーブル間のリレーションシップを含むデータの完全なセットを表します。

要件

推奨されるハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、および必要な service pack を以下に示します。
  • Microsoft Windows XP、Windows 2000、または Windows NT 4.0 Service Pack 6a (SP6a)
  • Microsoft Visual Studio .net
この資料では、次のトピックに精通しているを前提としています。
  • Visual C# .net の構文
  • 拡張マークアップ言語 (XML)

Books1.xml ファイルを作成します。

  1. Windows の [スタート] メニューから実行をクリックして型 メモ帳をクリックし、[ OK] をクリックします。
  2. 次のコードを選択し、コードを右クリックし、[コピー] をクリックします。メモ帳で、[編集] メニューの [貼り付け] をクリックします。
    <?xml version="1.0"?>
    <catalog>
       <book id="bk101">
          <author>Gambardella, Matthew</author>
          <title>XML Developer's Guide</title>
          <genre>Computer</genre>
          <price>44.95</price>
       </book>
       <book id="bk102">
          <author>Jeanette, Dasha</author>
          <title>Quack the Duck</title>
          <genre>Fantasy</genre>
          <price>5.95</price>
       </book>
    </catalog>
    					
  3. ファイル] メニューの [保存] をクリックします。
  4. [名前を付けて保存] ダイアログ ボックスの [ファイルの種類ドロップダウン リスト ボックスで、すべてのファイルをクリックします。ファイル名] ボックスに、入力します。 Books1.xmlをクリックし、[保存] をクリックします。

Books2.xml ファイルを作成します。

  1. メモ帳で、Books2.xml という新しいテキスト ファイルを作成します。
  2. コピーして Books2.xml に次の XML を貼り付けます。
    <?xml version="1.0"?>
    <catalog>
    <book id="bk106">
          <author>Randall, Cynthia</author>
          <title>Lover Birds</title>
          <genre>Romance</genre>
          <price>4.95</price>
       </book>
       <book id="bk107">
          <author>Vinzovskaia, Irina</author>
          <title>Piano Fort A</title>
          <genre>Romance</genre>
          <price>4.95</price>
       </book>
    </catalog>
    					
  3. ファイル] メニューの [保存] をクリックします。
  4. [名前を付けて保存] ダイアログ ボックスの [ファイルの種類ドロップダウン リスト ボックスで、すべてのファイルをクリックします。ファイル名] ボックスに、入力します。 Books2.xmlをクリックし、[保存] をクリックします。

Visual C# .net アプリケーションを作成する手順

  1. Visual Studio .net を起動し、新しい視覚 C# のコンソール アプリケーション プロジェクトを作成します。
  2. 次のコードをコード ウィンドウの先頭に追加します。
    using System;
    using System.Xml;
    using System.IO;
    using System.Data ;
    					
  3. コピーして、静的な無効メイン (文字列 args) を次のコードを貼り付けます。
    try
    	{
    		XmlTextReader xmlreader1 = new XmlTextReader("C:\\Books1.xml");
    		XmlTextReader xmlreader2 = new XmlTextReader("C:\\Books2.xml");
    
    		DataSet ds = new DataSet();
    		ds.ReadXml(xmlreader1);
    		DataSet ds2 = new DataSet();
    		ds2.ReadXml(xmlreader2);
    		ds.Merge(ds2);
    		ds.WriteXml("C:\\Books.xml");
    		Console.WriteLine("Completed merging XML documents");
    	}
    	catch (System.Exception ex)
    	{
    		Console.Write(ex.Message);
    	}
    Console.Read();	
    					
  4. ビルドして、アプリケーションを実行します。「XML ドキュメントをマージを終了しました」のメッセージがコンソール ウィンドウに表示されます。
  5. [ コンソール ] ウィンドウを閉じます。指定したパスに Books.xml ファイルを作成することに注意してください。
  6. Books.xml を開きます。Books2.xml のデータが Books1.xml を末尾に追加されますを確認します。

XML ドキュメントのさまざまなシナリオ

同じ構造の XML 文書をマージします。

上記の Visual C# .net のサンプルと同じ構造の XML 文書の出力を示します。

異なる構造の XML 文書をマージします。

  1. Books2.xml を開き、次の XML で、XML を交換してください。
    <?xml version="1.0" ?>
    <SampleData>
    <Customer>
              <CustomerName>Bob Frapples</CustomerName>
              <PricePerUnit>5.95</PricePerUnit>
              <ClosingDate>2001-12-16</ClosingDate>
    </Customer>
    <Customer>
              <CustomerName>Bob Frapples</CustomerName>
              <PricePerUnit>5.95</PricePerUnit>
              <ClosingDate>2001-12-16</ClosingDate>
    </Customer>
    </SampleData>
    					
  2. Books2.xml を保存します。
  3. Visual C# .net のプロジェクトを再度実行します。最初の XML 文書 (Books1.xml) ノードから 2 番目の文書 (Books2.xml) が追加されることに注意してください。

2 番目の文書その他の要素が含まれていると同様の構造を持つ XML ドキュメントをマージします。

  1. Books2.xml を開き、次の XML で、XML を交換してください。
    <?xml version="1.0"?>
    <catalog>
    <book id="bk106">
          <author>Randall, Cynthia</author>
          <title>Lover Birds</title>
          <genre>Romance</genre>
          <price>4.95</price>
          <publish_date>2000-09-02</publish_date>
          <description>When Carla meets Paul at an ornithology 
          conference, tempers fly as feathers get ruffled.</description>
       </book>
       <book id="bk107">
          <author>Vinzovskaia, Irina</author>
          <title>Piano Fort A</title>
          <genre>Romance</genre>
          <price>4.95</price>
          <publish_date>2000-11-02</publish_date>
          <description>Two young pianists strike a chord when they fight a 
          pitched battle to stop the gnomes at a key base.</description>
       </book>
    </catalog>
    					
  2. Books2.xml を保存します。
  3. Visual C# .net のプロジェクトを再度実行します。最初の XML 文書の 2 番目の文書のノードが追加されることに注意してください。

属性の 2 番目の文書のような構造を持つ XML ドキュメントをマージします。

  1. Books2.xml を開き、次の XML で、XML を交換してください。
    <?xml version="1.0"?>
    <catalog>
    <book id="bk106" genre="Romance">
          <author>Randall, Cynthia</author>
          <title>Lover Birds</title>
          <price>4.95</price>
       </book>
       <book id="bk107" genre="Romance">
          <author>Vinzovskaia, Irina</author>
          <title>Piano Fort A</title>
          <price>4.95</price>
       </book>
       <book id="bk108" genre="Horror">
          <author>de Dogg, Jazz</author>
          <title>Night of the Flea</title>
          <price>4.95</price>
       </book>
       </catalog>
    					
  2. Books2.xml を保存します。
  3. Visual C# .net のプロジェクトを再度実行します。最初の XML ドキュメントには、2 番目の文書のノードが追加され、最初の XML 文書と同じ構造であるに注意してください。

属性の最初の文書のような構造を持つ XML ドキュメントをマージします。

  1. Books1.xml が Books2.xml に付加されるようにコードの Visual C# のように変更します。
    try
    	{
    		XmlTextReader xmlreader1 = new XmlTextReader("C:\\Books2.xml");
    		XmlTextReader xmlreader2 = new XmlTextReader("C:\\Books1.xml");
    
    		DataSet ds = new DataSet();
    		ds.ReadXml(xmlreader1);
    		DataSet ds2 = new DataSet();
    		ds2.ReadXml(xmlreader2);
    		ds.Merge(ds2);
    		ds.WriteXml("C:\\Books.xml");
    		Console.WriteLine("Completed merging XML documents");
    	}
    	catch (System.Exception ex)
    	{
    		Console.Write(ex.Message);
    	}
    Console.Read();	
    					
  2. Visual C# .net のプロジェクトを再度実行します。結果の XML ドキュメントが Books2.xml に Books1.xml のノードを追加することに注意してください。さらに、Book のノードすべてに"genre"属性が含まれていることを確認します。

    したがって、結果の XML がわかりやすいように、最初の XML ドキュメントの構造によっては、第 2 の XML 文書が変更されます。

関連情報

詳細については、「サポート技術情報」資料を参照するには、次の文書番号をクリックしてください。
286817 ドキュメント オブジェクト モデル (DOM) のプログラミングによって 2 つの XML ドキュメント内のデータをマージするには、方法

プロパティ

文書番号: 311530 - 最終更新日: 2012年8月30日 - リビジョン: 1.0
この資料は以下の製品について記述したものです。
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
キーワード:?
kbhowtomaster kbio kbsystemdata kbmt KB311530 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:311530
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