XmlSerializer.Deserialize メソッド (TextReader)
指定した TextReader に格納されている XML ドキュメントを逆シリアル化します。
Overloads Public Function Deserialize( _
ByVal textReader As TextReader _) As Object
[C#]
public object Deserialize(TextReadertextReader);
[C++]
public: Object* Deserialize(TextReader* textReader);
[JScript]
public function Deserialize(
textReader : TextReader) : Object;
パラメータ
- textReader
逆シリアル化する XML ドキュメントを格納している TextReader 。
戻り値
逆シリアル化される Object 。
解説
逆シリアル化とは、XML インスタンス ドキュメントを読み取り、そのドキュメントの XML スキーマ (XSD) に厳密に型指定されたオブジェクトを構築する処理のことです。
逆シリアル化する前に、逆シリアル化の対象オブジェクトの型を使用して XmlSerializer を生成する必要があります。
TextReader の継承クラスには、 StringReader と StreamReader があります。 StreamReader を使用してオブジェクトを逆シリアル化する場合には、適切な Encoding で StreamReader を構築する必要があります。XML ドキュメントで指定されているエンコーディングは無視されます。
メモ XML ドキュメントで指定されたエンコーディングを使用するには、代わりに、 XmlReader を受け取る Deserialize オーバーロードを使用します。 XmlReader は、XML ドキュメントで指定されたエンコーディングを自動的に検出して使用します。
使用例
[Visual Basic, C#, C++] TextReader オブジェクトを使用して、オブジェクトを逆シリアル化する例を次に示します。
Imports System
Imports System.IO
Imports System.Text
Imports System.Xml.Serialization
Imports Microsoft.VisualBasic
' This is the class that will be deserialized.
Public Class OrderedItem
Public ItemName As String
Public Description As String
Public UnitPrice As Decimal
Public Quantity As Integer
Public LineTotal As Decimal
' A custom method used to calculate price per item.
Public Sub Calculate()
LineTotal = UnitPrice * Quantity
End Sub
End Class
Public Class Test
Public Shared Sub Main()
Dim t As New Test()
' Read a purchase order.
t.DeserializeObject("simple.xml")
End Sub
Private Sub DeserializeObject(filename As String)
Console.WriteLine("Reading with TextReader")
' Create an instance of the XmlSerializer specifying type.
Dim serializer As New XmlSerializer(GetType(OrderedItem))
' Create a TextReader to read the file. Specify an
' Encoding to use.
Dim reader As New StreamReader(filename, Encoding.Unicode)
' Declare an object variable of the type to be deserialized.
Dim i As OrderedItem
' Use the Deserialize method to restore the object's state.
i = CType(serializer.Deserialize(reader), OrderedItem)
' Write out the properties of the object.
Console.Write(i.ItemName & ControlChars.Tab & _
i.Description & ControlChars.Tab & _
i.UnitPrice & ControlChars.Tab & _
i.Quantity & ControlChars.Tab & _
i.LineTotal)
End Sub
End Class
[C#]
using System;
using System.IO;
using System.Text;
using System.Xml.Serialization;
// This is the class that will be deserialized.
public class OrderedItem
{
public string ItemName;
public string Description;
public decimal UnitPrice;
public int Quantity;
public decimal LineTotal;
// A custom method used to calculate price per item.
public void Calculate()
{
LineTotal = UnitPrice * Quantity;
}
}
public class Test
{
public static void Main()
{
Test t = new Test();
// Read a purchase order.
t.DeserializeObject("simple.xml");
}
private void DeserializeObject(string filename)
{
Console.WriteLine("Reading with TextReader");
// Create an instance of the XmlSerializer specifying type.
XmlSerializer serializer =
new XmlSerializer(typeof(OrderedItem));
/* Create a TextReader to read the file. Specify an
Encoding to use. */
TextReader reader = new StreamReader(filename, Encoding.Unicode);
// Declare an object variable of the type to be deserialized.
OrderedItem i;
// Use the Deserialize method to restore the object's state.
i = (OrderedItem) serializer.Deserialize(reader);
// Write out the properties of the object.
Console.Write(
i.ItemName + "\t" +
i.Description + "\t" +
i.UnitPrice + "\t" +
i.Quantity + "\t" +
i.LineTotal);
}
}
[C++]
#using <mscorlib.dll>
#using <System.Xml.dll>
#using <System.dll>
using namespace System;
using namespace System::IO;
using namespace System::Text;
using namespace System::Xml::Serialization;
// This is the class that will be deserialized.
public __gc class OrderedItem
{
public:
String* ItemName;
String* Description;
Decimal UnitPrice;
int Quantity;
Decimal LineTotal;
// A custom method used to calculate price per item.
void Calculate()
{
LineTotal = UnitPrice * Quantity;
}
};
void DeserializeObject(String* filename)
{
Console::WriteLine(S"Reading with TextReader");
// Create an instance of the XmlSerializer specifying type.
XmlSerializer* serializer =
new XmlSerializer(__typeof(OrderedItem));
/* Create a TextReader to read the file. Specify an
Encoding to use. */
TextReader* reader = new StreamReader(filename, Encoding::Unicode);
// Declare an object variable of the type to be deserialized.
OrderedItem* i;
// Use the Deserialize method to restore the object's state.
i = dynamic_cast<OrderedItem*> (serializer->Deserialize(reader));
// Write out the properties of the object.
Console::Write(S"{0}\t{1}\t{2}\t{3}\t{4}",
i->ItemName, i->Description, __box(i->UnitPrice), __box(i->Quantity), i->LineTotal);
}
int main()
{
// Read a purchase order.
DeserializeObject(S"simple.xml");
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
XmlSerializer クラス | XmlSerializer メンバ | System.Xml.Serialization 名前空間 | XmlSerializer.Deserialize オーバーロードの一覧 | XML シリアル化の概要 | 属性を使用した XML シリアル化の制御 | XML シリアル化の例 | XML スキーマ定義ツールと XML シリアル化 | CanDeserialize | Serialize