DataTable.ReadXml メソッド (XmlReader)
アセンブリ: System.Data (system.data.dll 内)

Dim instance As DataTable Dim reader As XmlReader Dim returnValue As XmlReadMode returnValue = instance.ReadXml(reader)
戻り値
データを読み込むために使用する XmlReadMode。

現在の DataTable およびその子孫には、指定した XmlReader で指定されたファイルからデータが読み込まれます。このメソッドの動作は ReadXml メソッドの動作とほとんど同じですが、この場合は異なり、データは現在のテーブルとその子孫にのみ読み込まれます。
ReadXml メソッドを使用すると、XML ドキュメントから DataSet に、データだけ、またはデータとスキーマの両方を読み込むことができます。これに対して ReadXmlSchema メソッドは、スキーマだけを読み込みます。データとスキーマの両方を読み取るには、XmlReadMode パラメータを含む ReadXML オーバーロードの 1 つを使用し、その値を ReadSchema に設定します。
WriteXml メソッドと WriteXmlSchema メソッドについても、それぞれ同様です。XML データ、またはスキーマとデータの両方を DataTable から書き込むには、WriteXml メソッドを使用します。スキーマだけを書き込むには、WriteXmlSchema メソッドを使用します。
インライン スキーマを指定した場合、そのインライン スキーマはデータを読み込む前に既存のリレーショナル構造を拡張するために使用されます。競合が存在する場合は (たとえば、異なるデータ型で定義された同じテーブルの同じ列)、例外が発生します。
インライン スキーマを指定しない場合、XML ドキュメントの構造に従い、必要に応じて、リレーショナル構造は推論によって拡張されます。すべてのデータを公開するために、推論によってスキーマを拡張できない場合は、例外が発生します。
![]() |
---|
シリアル化された XML で有効な XML 文字 ("_" など) がエスケープされている場合、DataSet は、XML 要素をその対応する DataColumn や DataTable に関連付けません。DataSet 自体は、XML 要素名の無効な XML 文字のみをエスケープするため、同じ要素名しか使用できません。XML 要素名の有効文字がエスケープされている場合、その要素は処理中に無視されます。 |

2 列と 10 行を含む DataTable を作成する例を次に示します。この例では、DataSet スキーマとデータを XmlReader に書き込みます。さらに 2 番目の DataTable を作成し、ReadXml メソッドを呼び出して、このテーブルに XmlReader インスタンスのスキーマとデータを入力します。
Private Sub DemonstrateReadWriteXMLDocumentWithReader() Dim table As DataTable = CreateTestTable("XmlDemo") PrintValues(table, "Original table") ' Write the schema and data to XML in a memory stream. Dim xmlStream As New System.IO.MemoryStream() table.WriteXml(xmlStream, XmlWriteMode.WriteSchema) ' Rewind the memory stream. xmlStream.Position = 0 Dim reader As New System.Xml.XmlTextReader(xmlStream) Dim newTable As New DataTable newTable.ReadXml(reader) ' Print out values in the table. PrintValues(newTable, "New Table") End Sub Private Function CreateTestTable(ByVal tableName As String) _ As DataTable ' Create a test DataTable with two columns and a few rows. Dim table As New DataTable(tableName) Dim column As New DataColumn("id", GetType(System.Int32)) column.AutoIncrement = True table.Columns.Add(column) column = New DataColumn("item", GetType(System.String)) table.Columns.Add(column) ' Add ten rows. Dim row As DataRow For i As Integer = 0 To 9 row = table.NewRow() row("item") = "item " & i table.Rows.Add(row) Next i table.AcceptChanges() Return table End Function Private Sub PrintValues(ByVal table As DataTable, _ ByVal label As String) Console.WriteLine(label) For Each row As DataRow In table.Rows For Each column As DataColumn In table.Columns Console.Write("{0}{1}", ControlChars.Tab, row(column)) Next column Console.WriteLine() Next row End Sub
private static void DemonstrateReadWriteXMLDocumentWithReader() { DataTable table = CreateTestTable("XmlDemo"); PrintValues(table, "Original table"); // Write the schema and data to XML in a memory stream. System.IO.MemoryStream xmlStream = new System.IO.MemoryStream(); table.WriteXml(xmlStream, XmlWriteMode.WriteSchema); // Rewind the memory stream. xmlStream.Position = 0; System.Xml.XmlTextReader reader = new System.Xml.XmlTextReader(xmlStream); DataTable newTable = new DataTable(); newTable.ReadXml(reader); // Print out values in the table. PrintValues(newTable, "New table"); } private static DataTable CreateTestTable(string tableName) { // Create a test DataTable with two columns and a few rows. DataTable table = new DataTable(tableName); DataColumn column = new DataColumn("id", typeof(System.Int32)); column.AutoIncrement = true; table.Columns.Add(column); column = new DataColumn("item", typeof(System.String)); table.Columns.Add(column); // Add ten rows. DataRow row; for (int i = 0; i <= 9; i++) { row = table.NewRow(); row["item"] = "item " + i; table.Rows.Add(row); } table.AcceptChanges(); return table; } private static void PrintValues(DataTable table, string label) { Console.WriteLine(label); foreach (DataRow row in table.Rows) { foreach (DataColumn column in table.Columns) { Console.Write("\t{0}", row[column]); } Console.WriteLine(); } }

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


DataTable.ReadXml メソッド (String)
アセンブリ: System.Data (system.data.dll 内)

Dim instance As DataTable Dim fileName As String Dim returnValue As XmlReadMode returnValue = instance.ReadXml(fileName)
戻り値
データを読み込むために使用する XmlReadMode。

現在の DataTable およびその子孫には、指定した String で指定されたファイルからデータが読み込まれます。このメソッドの動作は DataSet.ReadXml メソッドの動作とほとんど同じですが、この場合は異なり、データは現在のテーブルとその子孫にのみ読み込まれます。
ReadXml メソッドを使用すると、XML ドキュメントから DataSet に、データだけ、またはデータとスキーマの両方を読み込むことができます。これに対して ReadXmlSchema メソッドは、スキーマだけを読み込みます。データとスキーマの両方を読み取るには、XmlReadMode パラメータを含む ReadXML オーバーロードの 1 つを使用し、その値を ReadSchema に設定します。
WriteXml メソッドと WriteXmlSchema メソッドについても、それぞれ同様です。XML データ、またはスキーマとデータの両方を DataTable から書き込むには、WriteXml メソッドを使用します。スキーマだけを書き込むには、WriteXmlSchema メソッドを使用します。
インライン スキーマを指定した場合、そのインライン スキーマはデータを読み込む前に既存のリレーショナル構造を拡張するために使用されます。競合が存在する場合は (たとえば、異なるデータ型で定義された同じテーブルの同じ列)、例外が発生します。
インライン スキーマを指定しない場合、XML ドキュメントの構造に従い、必要に応じて、リレーショナル構造は推論によって拡張されます。すべてのデータを公開するために、推論によってスキーマを拡張できない場合は、例外が発生します。
![]() |
---|
シリアル化された XML で有効な XML 文字 ("_" など) がエスケープされている場合、DataSet は、XML 要素をその対応する DataColumn や DataTable に関連付けません。DataSet 自体は、XML 要素名の無効な XML 文字のみをエスケープするため、同じ要素名しか使用できません。XML 要素名の有効文字がエスケープされている場合、その要素は処理中に無視されます。 |

2 列と 10 行を含む DataTable を作成する例を次に示します。この例では、DataSet スキーマとデータをディスクに書き込みます。さらに 2 番目の DataTable を作成し、ReadXml メソッドを呼び出して、このテーブルにスキーマとデータを入力します。
Private Sub DemonstrateReadWriteXMLDocumentWithString() Dim table As DataTable = CreateTestTable("XmlDemo") PrintValues(table, "Original table") ' Write the schema and data to XML in a file. Dim fileName As String = "C:\TestData.xml" table.WriteXml(fileName, XmlWriteMode.WriteSchema) Dim newTable As New DataTable newTable.ReadXml(fileName) ' Print out values in the table. PrintValues(newTable, "New Table") End Sub Private Function CreateTestTable(ByVal tableName As String) _ As DataTable ' Create a test DataTable with two columns and a few rows. Dim table As New DataTable(tableName) Dim column As New DataColumn("id", GetType(System.Int32)) column.AutoIncrement = True table.Columns.Add(column) column = New DataColumn("item", GetType(System.String)) table.Columns.Add(column) ' Add ten rows. Dim row As DataRow For i As Integer = 0 To 9 row = table.NewRow() row("item") = "item " & i table.Rows.Add(row) Next i table.AcceptChanges() Return table End Function Private Sub PrintValues(ByVal table As DataTable, _ ByVal label As String) Console.WriteLine(label) For Each row As DataRow In table.Rows For Each column As DataColumn In table.Columns Console.Write("{0}{1}", ControlChars.Tab, row(column)) Next column Console.WriteLine() Next row End Sub
private static void DemonstrateReadWriteXMLDocumentWithString() { DataTable table = CreateTestTable("XmlDemo"); PrintValues(table, "Original table"); string fileName = "C:\\TestData.xml"; table.WriteXml(fileName, XmlWriteMode.WriteSchema); DataTable newTable = new DataTable(); newTable.ReadXml(fileName); // Print out values in the table. PrintValues(newTable, "New table"); } private static DataTable CreateTestTable(string tableName) { // Create a test DataTable with two columns and a few rows. DataTable table = new DataTable(tableName); DataColumn column = new DataColumn("id", typeof(System.Int32)); column.AutoIncrement = true; table.Columns.Add(column); column = new DataColumn("item", typeof(System.String)); table.Columns.Add(column); // Add ten rows. DataRow row; for (int i = 0; i <= 9; i++) { row = table.NewRow(); row["item"] = "item " + i; table.Rows.Add(row); } table.AcceptChanges(); return table; } private static void PrintValues(DataTable table, string label) { Console.WriteLine(label); foreach (DataRow row in table.Rows) { foreach (DataColumn column in table.Columns) { Console.Write("\t{0}", row[column]); } Console.WriteLine(); } }

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


DataTable.ReadXml メソッド

名前 | 説明 |
---|---|
DataTable.ReadXml (Stream) | 指定した Stream を使用して、XML スキーマとデータを DataTable に読み込みます。 .NET Compact Framework によってサポートされています。 |
DataTable.ReadXml (String) | 指定したファイルから、XML スキーマとデータを DataTable に読み込みます。 .NET Compact Framework によってサポートされています。 |
DataTable.ReadXml (TextReader) | 指定した TextReader を使用して、XML スキーマとデータを DataTable に読み込みます。 .NET Compact Framework によってサポートされています。 |
DataTable.ReadXml (XmlReader) | 指定した XmlReader を使用して、XML スキーマとデータを DataTable に読み込みます。 .NET Compact Framework によってサポートされています。 |

DataTable.ReadXml メソッド (Stream)
アセンブリ: System.Data (system.data.dll 内)

Dim instance As DataTable Dim stream As Stream Dim returnValue As XmlReadMode returnValue = instance.ReadXml(stream)
戻り値
データを読み込むために使用する XmlReadMode。

現在の DataTable およびその子孫には、指定された Stream のデータが読み込まれます。このメソッドの動作は DataSet.ReadXml メソッドの動作とほとんど同じですが、この場合は異なり、データは現在のテーブルとその子孫にのみ読み込まれます。
ReadXml メソッドを使用すると、XML ドキュメントから DataSet に、データだけ、またはデータとスキーマの両方を読み込むことができます。これに対して ReadXmlSchema メソッドは、スキーマだけを読み込みます。データとスキーマの両方を読み取るには、XmlReadMode パラメータを含む ReadXML オーバーロードの 1 つを使用し、その値を ReadSchema に設定します。
WriteXml メソッドと WriteXmlSchema メソッドについても、それぞれ同様です。XML データ、またはスキーマとデータの両方を DataTable から書き込むには、WriteXml メソッドを使用します。スキーマだけを書き込むには、WriteXmlSchema メソッドを使用します。
インライン スキーマを指定した場合、そのインライン スキーマはデータを読み込む前に既存のリレーショナル構造を拡張するために使用されます。競合が存在する場合は (たとえば、異なるデータ型で定義された同じテーブルの同じ列)、例外が発生します。
インライン スキーマを指定しない場合、XML ドキュメントの構造に従い、必要に応じて、リレーショナル構造は推論によって拡張されます。すべてのデータを公開するために、推論によってスキーマを拡張できない場合は、例外が発生します。
![]() |
---|
シリアル化された XML で有効な XML 文字 ("_" など) がエスケープされている場合、DataSet は、XML 要素をその対応する DataColumn や DataTable に関連付けません。DataSet 自体は、XML 要素名の無効な XML 文字のみをエスケープするため、同じ要素名しか使用できません。XML 要素名の有効文字がエスケープされている場合、その要素は処理中に無視されます。 |

2 列と 10 行を含む DataTable を作成する例を次に示します。この例では WriteXml メソッドを呼び出し、DataSet スキーマとデータをメモリ ストリームに書き込みます。さらに 2 番目の DataTable を作成し、ReadXml メソッドを呼び出して、このテーブルにスキーマとデータを入力します。
Private Sub DemonstrateReadWriteXMLDocumentWithStream() Dim table As DataTable = CreateTestTable("XmlDemo") PrintValues(table, "Original table") ' Write the schema and data to XML in a memory stream. Dim xmlStream As New System.IO.MemoryStream() table.WriteXml(xmlStream, XmlWriteMode.WriteSchema) ' Rewind the memory stream. xmlStream.Position = 0 Dim newTable As New DataTable newTable.ReadXml(xmlStream) ' Print out values in the table. PrintValues(newTable, "New Table") End Sub Private Function CreateTestTable(ByVal tableName As String) As DataTable ' Create a test DataTable with two columns and a few rows. Dim table As New DataTable(tableName) Dim column As New DataColumn("id", GetType(System.Int32)) column.AutoIncrement = True table.Columns.Add(column) column = New DataColumn("item", GetType(System.String)) table.Columns.Add(column) ' Add ten rows. Dim row As DataRow For i As Integer = 0 To 9 row = table.NewRow() row("item") = "item " & i table.Rows.Add(row) Next i table.AcceptChanges() Return table End Function Private Sub PrintValues(ByVal table As DataTable, ByVal label As String) ' Display the contents of the supplied DataTable: Console.WriteLine(label) For Each row As DataRow In table.Rows For Each column As DataColumn In table.Columns Console.Write("{0}{1}", ControlChars.Tab, row(column)) Next column Console.WriteLine() Next row End Sub
private static void DemonstrateReadWriteXMLDocumentWithStream() { DataTable table = CreateTestTable("XmlDemo"); PrintValues(table, "Original table"); // Write the schema and data to XML in a memory stream. System.IO.MemoryStream xmlStream = new System.IO.MemoryStream(); table.WriteXml(xmlStream, XmlWriteMode.WriteSchema); // Rewind the memory stream. xmlStream.Position = 0; DataTable newTable = new DataTable(); newTable.ReadXml(xmlStream); // Print out values in the table. PrintValues(newTable, "New table"); } private static DataTable CreateTestTable(string tableName) { // Create a test DataTable with two columns and a few rows. DataTable table = new DataTable(tableName); DataColumn column = new DataColumn("id", typeof(System.Int32)); column.AutoIncrement = true; table.Columns.Add(column); column = new DataColumn("item", typeof(System.String)); table.Columns.Add(column); // Add ten rows. DataRow row; for (int i = 0; i <= 9; i++) { row = table.NewRow(); row["item"] = "item " + i; table.Rows.Add(row); } table.AcceptChanges(); return table; } private static void PrintValues(DataTable table, string label) { // Display the contents of the supplied DataTable: Console.WriteLine(label); foreach (DataRow row in table.Rows) { foreach (DataColumn column in table.Columns) { Console.Write("\t{0}", row[column]); } Console.WriteLine(); } }

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


DataTable.ReadXml メソッド (TextReader)
アセンブリ: System.Data (system.data.dll 内)

Dim instance As DataTable Dim reader As TextReader Dim returnValue As XmlReadMode returnValue = instance.ReadXml(reader)
戻り値
データを読み込むために使用する XmlReadMode。

現在の DataTable およびその子孫には、指定された TextReader のデータが読み込まれます。このメソッドの動作は DataSet.ReadXml メソッドの動作とほとんど同じですが、この場合は異なり、データは現在のテーブルとその子孫にのみ読み込まれます。
ReadXml メソッドを使用すると、XML ドキュメントから DataTable に、データだけ、またはデータとスキーマの両方を読み込むことができます。これに対して ReadXmlSchema メソッドは、スキーマだけを読み込みます。データとスキーマの両方を読み取るには、XmlReadMode パラメータを含む ReadXML オーバーロードの 1 つを使用し、その値を ReadSchema に設定します。
WriteXml メソッドと WriteXmlSchema メソッドについても、それぞれ同様です。XML データ、またはスキーマとデータの両方を DataTable から書き込むには、WriteXml メソッドを使用します。スキーマだけを書き込むには、WriteXmlSchema メソッドを使用します。
インライン スキーマを指定した場合、そのインライン スキーマはデータを読み込む前に既存のリレーショナル構造を拡張するために使用されます。競合が存在する場合は (たとえば、異なるデータ型で定義された同じテーブルの同じ列)、例外が発生します。
インライン スキーマを指定しない場合、XML ドキュメントの構造に従い、必要に応じて、リレーショナル構造は推論によって拡張されます。すべてのデータを公開するために、推論によってスキーマを拡張できない場合は、例外が発生します。
![]() |
---|
シリアル化された XML で有効な XML 文字 ("_" など) がエスケープされている場合、DataSet は、XML 要素をその対応する DataColumn や DataTable に関連付けません。DataSet 自体は、XML 要素名の無効な XML 文字のみをエスケープするため、同じ要素名しか使用できません。XML 要素名の有効文字がエスケープされている場合、その要素は処理中に無視されます。 |

2 列と 10 行を含む DataTable を作成する例を次に示します。この例では WriteXml メソッドを呼び出し、DataSet スキーマとデータをメモリ ストリームに書き込みます。さらに 2 番目の DataTable を作成し、ReadXml メソッドを呼び出して、このテーブルにスキーマとデータを入力します。
Private Sub DemonstrateReadWriteXMLDocumentWithReader() Dim table As DataTable = CreateTestTable("XmlDemo") PrintValues(table, "Original table") ' Write the schema and data to XML in a memory stream. Dim xmlStream As New System.IO.MemoryStream() table.WriteXml(xmlStream, XmlWriteMode.WriteSchema) ' Rewind the memory stream. xmlStream.Position = 0 Dim reader As New System.IO.StreamReader(xmlStream) Dim newTable As New DataTable newTable.ReadXml(reader) ' Print out values in the table. PrintValues(newTable, "New Table") End Sub Private Function CreateTestTable(ByVal tableName As String) _ As DataTable ' Create a test DataTable with two columns and a few rows. Dim table As New DataTable(tableName) Dim column As New DataColumn("id", GetType(System.Int32)) column.AutoIncrement = True table.Columns.Add(column) column = New DataColumn("item", GetType(System.String)) table.Columns.Add(column) ' Add ten rows. Dim row As DataRow For i As Integer = 0 To 9 row = table.NewRow() row("item") = "item " & i table.Rows.Add(row) Next i table.AcceptChanges() Return table End Function Private Sub PrintValues(ByVal table As DataTable, _ ByVal label As String) Console.WriteLine(label) For Each row As DataRow In table.Rows For Each column As DataColumn In table.Columns Console.Write("{0}{1}", ControlChars.Tab, row(column)) Next column Console.WriteLine() Next row End Sub
private static void DemonstrateReadWriteXMLDocumentWithReader() { DataTable table = CreateTestTable("XmlDemo"); PrintValues(table, "Original table"); // Write the schema and data to XML in a memory stream. System.IO.MemoryStream xmlStream = new System.IO.MemoryStream(); table.WriteXml(xmlStream, XmlWriteMode.WriteSchema); // Rewind the memory stream. xmlStream.Position = 0; System.IO.StreamReader reader = new System.IO.StreamReader(xmlStream); DataTable newTable = new DataTable(); newTable.ReadXml(reader); // Print out values in the table. PrintValues(newTable, "New table"); } private static DataTable CreateTestTable(string tableName) { // Create a test DataTable with two columns and a few rows. DataTable table = new DataTable(tableName); DataColumn column = new DataColumn("id", typeof(System.Int32)); column.AutoIncrement = true; table.Columns.Add(column); column = new DataColumn("item", typeof(System.String)); table.Columns.Add(column); // Add ten rows. DataRow row; for (int i = 0; i <= 9; i++) { row = table.NewRow(); row["item"] = "item " + i; table.Rows.Add(row); } table.AcceptChanges(); return table; } private static void PrintValues(DataTable table, string label) { Console.WriteLine(label); foreach (DataRow row in table.Rows) { foreach (DataColumn column in table.Columns) { Console.Write("\t{0}", row[column]); } Console.WriteLine(); } }

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。

