Visual C# を使用してオブジェクトを XML にシリアル化する
この記事では、Visual C# を使用してオブジェクトを拡張マークアップ言語 (XML) にシリアル化する方法について説明します。
元の製品バージョン: Visual Studio
元の KB 番号: 815813
まとめ
この記事で説明するメソッドは、オブジェクトの状態を保持するのに役立ちます。 このメソッドは、XML を新しいオブジェクトに逆シリアル化してオブジェクトを複製する場合にも役立ちます。
この記事では、次の Microsoft .NET Framework クラス ライブラリ名前空間について説明します。
System.Xml
System.Xml.Serialization
要件
この記事では、次のトピックについて理解していることを前提としています。
- Visual Studio
- XML に関する一般的な知識
- Visual C に関する一般的な知識#
XML シリアル化
シリアル化は、オブジェクトの状態を取得し、何らかの方法で保持するプロセスです。 .NET Framework には、任意のオブジェクトを XML にシリアル化できる強力なオブジェクトが含まれています。 System.Xml.Serialization
名前空間は、この機能を提供します。
オブジェクトを作成し、その状態を XML にシリアル化するコンソール アプリケーションを作成するには、次の手順に従います。
Visual C# で、新しいコンソール アプリケーション プロジェクトを作成します。
Project メニューの Add Class を選択して、新しいクラスをプロジェクトに追加します。
[新しい項目の追加] ダイアログ ボックスで、クラスの名前を clsPerson に変更します。
[追加] を選択します。 新しいクラスが作成されます。
パブリック クラス
clsPerson
ステートメントの後に次のコードを追加します。public string FirstName; public string MI; public string LastName;
Visual Studio で Program.cs のコード ウィンドウに切り替えます。
void Main
メソッドで、clsPerson
クラスのインスタンスを宣言して作成します。clsPerson p = new clsPerson();
clsPerson
オブジェクトのプロパティを設定します。p.FirstName = "Jeff"; p.MI = "A"; p.LastName = "Price";
Xml.Serialization
名前空間には、オブジェクトを XML にシリアル化するXmlSerializer
クラスが含まれています。XmlSerializer
のインスタンスを作成するときは、シリアル化するクラスの型をコンストラクターに渡します。System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
Serialize
メソッドは、オブジェクトを XML にシリアル化するために使用されます。 シリアル化はオーバーロードされ、TextWriter
、Stream
、またはXMLWriter
オブジェクトに出力を送信できます。 この例では、出力をコンソールに送信します。x.Serialize(Console.Out,p); Console.WriteLine(); Console.ReadLine();
完全なコード リスト
using System;
public class clsPerson
{
public string FirstName;
public string MI;
public string LastName;
}
class class1
{
static void Main(string[] args)
{
clsPerson p=new clsPerson();
p.FirstName = "Jeff";
p.MI = "A";
p.LastName = "Price";
System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
x.Serialize(Console.Out, p);
Console.WriteLine();
Console.ReadLine();
}
}
検証
プロジェクトが動作することを確認するには、Ctrl キーを押しながら F5 キーを押してプロジェクトを実行します。 clsPerson
オブジェクトが作成され、入力した値が設定されます。 この状態は XML にシリアル化されます。 コンソール ウィンドウには、次のコードが表示されます。
<?xml version="1.0" encoding="IBM437"?>
<clsPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FirstName>Jeff</FirstName>
<MI>A</MI>
<LastName>Price</LastName>
</clsPerson>
トラブルシューティング
Xml.Serialization.XmlSerializer
オブジェクトは、浅いシリアル化のみを実行します。 オブジェクトまたは子オブジェクトのプライベート変数もシリアル化する場合は、ディープ シリアル化を使用する必要があります。