XmlSerializer.Deserialize メソッド (Stream)
指定した Stream に格納されている XML ドキュメントを逆シリアル化します。
Overloads Public Function Deserialize( _
ByVal stream As Stream _) As Object
[C#]
public object Deserialize(Streamstream);
[C++]
public: Object* Deserialize(Stream* stream);
[JScript]
public function Deserialize(
stream : Stream) : Object;
パラメータ
- stream
逆シリアル化する XML ドキュメントを格納している Stream 。
戻り値
逆シリアル化される Object 。
解説
逆シリアル化とは、XML ドキュメントを読み取り、そのドキュメントの XML スキーマ (XSD) に厳密に型指定されたオブジェクトを構築する処理のことです。
逆シリアル化する前に、逆シリアル化の対象オブジェクトの型を使用して XmlSerializer を生成する必要があります。
stream パラメータを使用して、ストリームに書き込むようにデザインされている、 Stream クラスから派生したオブジェクトを指定します。 Stream の派生クラスには、次のクラスが含まれます。
使用例
[Visual Basic, C#, C++] Stream オブジェクトを使用して、オブジェクトを逆シリアル化する例を次に示します。
Imports System
Imports System.IO
Imports System.Xml.Serialization
Imports Microsoft.VisualBasic
' This is the class that will be deserialized.
Public Class OrderedItem
<XmlElement(Namespace := "http://www.cpandl.com")> _
Public ItemName As String
<XmlElement(Namespace := "http://www.cpandl.com")> _
Public Description As String
<XmlElement(Namespace := "http://www.cohowinery.com")> _
Public UnitPrice As Decimal
<XmlElement(Namespace := "http://www.cpandl.com")> _
Public Quantity As Integer
<XmlElement(Namespace := "http://www.cohowinery.com")> _
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(ByVal filename As String)
Console.WriteLine("Reading with Stream")
' Create an instance of the XmlSerializer.
Dim serializer As New XmlSerializer(GetType(OrderedItem))
' Reading the XML document requires a FileStream.
Dim reader As New FileStream(filename, FileMode.Open)
' Declare an object variable of the type to be deserialized.
Dim i As OrderedItem
' Call 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.Xml.Serialization;
// This is the class that will be deserialized.
public class OrderedItem
{
[XmlElement(Namespace = "http://www.cpandl.com")]
public string ItemName;
[XmlElement(Namespace = "http://www.cpandl.com")]
public string Description;
[XmlElement(Namespace="http://www.cohowinery.com")]
public decimal UnitPrice;
[XmlElement(Namespace = "http://www.cpandl.com")]
public int Quantity;
[XmlElement(Namespace="http://www.cohowinery.com")]
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 Stream");
// Create an instance of the XmlSerializer.
XmlSerializer serializer =
new XmlSerializer(typeof(OrderedItem));
// Reading the XML document requires a FileStream.
Stream reader= new FileStream(filename,FileMode.Open);
// Declare an object variable of the type to be deserialized.
OrderedItem i;
// Call 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::Xml::Serialization;
// This is the class that will be deserialized.
public __gc class OrderedItem
{
public:
[XmlElement(Namespace = S"http://www.cpandl.com")]
String* ItemName;
[XmlElement(Namespace = S"http://www.cpandl.com")]
String* Description;
[XmlElement(Namespace=S"http://www.cohowinery.com")]
Decimal UnitPrice;
[XmlElement(Namespace = S"http://www.cpandl.com")]
int Quantity;
[XmlElement(Namespace=S"http://www.cohowinery.com")]
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 Stream");
// Create an instance of the XmlSerializer.
XmlSerializer* serializer =
new XmlSerializer(__typeof(OrderedItem));
// Reading the XML document requires a FileStream.
Stream* reader= new FileStream(filename,FileMode::Open);
// Declare an object variable of the type to be deserialized.
OrderedItem* i;
// Call 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");
}
<?xml version="1.0"?>
<OrderedItem xmlns:inventory="http://www.cpandl.com" xmlns:money="http://www.cohowinery.com">
<inventory:ItemName>Widget</inventory:ItemName>
<inventory:Description>Regular Widget</inventory:Description>
<money:UnitPrice>2.3</money:UnitPrice>
<inventory:Quantity>10</inventory:Quantity>
<money:LineTotal>23</money:LineTotal>
</OrderedItem>
[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