DataTable.ReadXml メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
XML スキーマとデータを DataTable に読み込みます。
オーバーロード
ReadXml(Stream) | |
ReadXml(TextReader) |
指定した DataTable を使用して、XML スキーマとデータを TextReader に読み込みます。 |
ReadXml(String) |
指定したファイルから、XML スキーマとデータを DataTable に読み込みます。 |
ReadXml(XmlReader) |
注釈
メソッドは ReadXml 、データのみ、またはデータとスキーマの両方を XML ドキュメントから に読み取る DataTable 方法を提供します ReadXmlSchema が、メソッドはスキーマのみを読み取ります。 データとスキーマの両方を読み取る場合は、 パラメーターを ReadXML
含む XmlReadMode
オーバーロードのいずれかを使用し、その値を に ReadSchema
設定します。
メソッドと WriteXmlSchema メソッドについても、それぞれ同じことが当てはまりますWriteXml。 XML データ、または からスキーマとデータの両方を DataTable
書き込むには、 メソッドを使用します WriteXml
。 スキーマのみを記述するには、 メソッドを使用します WriteXmlSchema
。
注意
InvalidOperationExceptionから読み取られるか 書き込まれる 内のDataRow
列型が を実装し、 を実装IDynamicMetaObjectProviderIXmlSerializableしていない場合は、 がスローされます。
ReadXml(Stream)
- ソース:
- DataTable.cs
- ソース:
- DataTable.cs
- ソース:
- DataTable.cs
public:
System::Data::XmlReadMode ReadXml(System::IO::Stream ^ stream);
public System.Data.XmlReadMode ReadXml (System.IO.Stream? stream);
public System.Data.XmlReadMode ReadXml (System.IO.Stream stream);
member this.ReadXml : System.IO.Stream -> System.Data.XmlReadMode
Public Function ReadXml (stream As Stream) As XmlReadMode
パラメーター
戻り値
データを読み込むために使用する XmlReadMode。
例
次の例では、 DataTable 2 つの列と 10 行を含む を作成します。 この例では、 メソッドを DataTable 呼び出して、スキーマとデータをメモリ ストリームに WriteXml 書き込みます。 この例では、2 つ目 DataTable の を作成し、 メソッドを ReadXml 呼び出してスキーマとデータを入力します。
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();
}
}
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
注釈
現在 DataTable とその子孫は、指定された Streamからのデータと共に読み込まれます。 このメソッドの動作は メソッドの DataSet.ReadXml 動作と同じですが、この場合、データは現在のテーブルとその子孫に対してのみ読み込まれます。
メソッドは ReadXml 、データのみ、またはデータとスキーマの両方を XML ドキュメントから に読み取る DataTable 方法を提供します ReadXmlSchema が、メソッドはスキーマのみを読み取ります。
メソッドと WriteXmlSchema メソッドについても、それぞれ同じことが当てはまりますWriteXml。 XML データ、または からスキーマとデータの両方を DataTable
書き込むには、 メソッドを使用します WriteXml
。 スキーマのみを記述するには、 メソッドを使用します WriteXmlSchema
。
注意
InvalidOperationExceptionから読み取られるか 書き込まれる 内のDataRow
列型が を実装し、 を実装IDynamicMetaObjectProviderIXmlSerializableしていない場合は、 がスローされます。
インライン スキーマが指定されている場合、インライン スキーマは、データを読み込む前に既存のリレーショナル構造を拡張するために使用されます。 競合 (たとえば、異なるデータ型で定義されている同じテーブル内の同じ列) がある場合は、例外が発生します。
インライン スキーマが指定されていない場合、リレーショナル構造は、XML ドキュメントの構造に従って、必要に応じて推論によって拡張されます。 すべてのデータを公開するために推論によってスキーマを拡張できない場合は、例外が発生します。
注意
は DataSet
、("_") のような有効な XML 文字がシリアル化された XML でエスケープされている場合、XML 要素を対応する DataColumn
DataTable
要素に関連付けません。 それ自体は DataSet
、XML 要素名内の無効な XML 文字のみをエスケープするため、同じもののみを使用できます。 XML 要素名の有効な文字をエスケープすると、処理中に 要素は無視されます。
こちらもご覧ください
適用対象
ReadXml(TextReader)
- ソース:
- DataTable.cs
- ソース:
- DataTable.cs
- ソース:
- DataTable.cs
指定した DataTable を使用して、XML スキーマとデータを TextReader に読み込みます。
public:
System::Data::XmlReadMode ReadXml(System::IO::TextReader ^ reader);
public System.Data.XmlReadMode ReadXml (System.IO.TextReader? reader);
public System.Data.XmlReadMode ReadXml (System.IO.TextReader reader);
member this.ReadXml : System.IO.TextReader -> System.Data.XmlReadMode
Public Function ReadXml (reader As TextReader) As XmlReadMode
パラメーター
- reader
- TextReader
データを読み込むために使用する TextReader。
戻り値
データを読み込むために使用する XmlReadMode。
例
次の例では、 DataTable 2 つの列と 10 行を含む を作成します。 この例では、 メソッドを DataTable 呼び出して、スキーマとデータをメモリ ストリームに WriteXml 書き込みます。 この例では、2 つ目 DataTable の を作成し、 メソッドを ReadXml 呼び出してスキーマとデータを入力します。
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();
}
}
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
注釈
現在 DataTable とその子孫は、指定された TextReaderからのデータと共に読み込まれます。 このメソッドの動作は メソッドの DataSet.ReadXml 動作と同じですが、この場合、データは現在のテーブルとその子孫に対してのみ読み込まれます。
メソッドは ReadXml 、データのみ、またはデータとスキーマの両方を XML ドキュメントから に読み取る DataTable 方法を提供します ReadXmlSchema が、メソッドはスキーマのみを読み取ります。
メソッドと WriteXmlSchema メソッドについても、それぞれ同じことが当てはまりますWriteXml。 XML データ、または からスキーマとデータの両方を DataTable
書き込むには、 メソッドを使用します WriteXml
。 スキーマのみを記述するには、 メソッドを使用します WriteXmlSchema
。
注意
InvalidOperationExceptionから読み取られるか 書き込まれる 内のDataRow
列型が を実装し、 を実装IDynamicMetaObjectProviderIXmlSerializableしていない場合は、 がスローされます。
インライン スキーマが指定されている場合、インライン スキーマは、データを読み込む前に既存のリレーショナル構造を拡張するために使用されます。 競合 (たとえば、異なるデータ型で定義されている同じテーブル内の同じ列) がある場合は、例外が発生します。
インライン スキーマが指定されていない場合、リレーショナル構造は、XML ドキュメントの構造に従って、必要に応じて推論によって拡張されます。 すべてのデータを公開するために推論によってスキーマを拡張できない場合は、例外が発生します。
注意
は DataSet
、("_") のような有効な XML 文字がシリアル化された XML でエスケープされている場合、XML 要素を対応する DataColumn
DataTable
要素に関連付けません。 それ自体は DataSet
、XML 要素名内の無効な XML 文字のみをエスケープするため、同じもののみを使用できます。 XML 要素名の有効な文字をエスケープすると、処理中に 要素は無視されます。
こちらもご覧ください
適用対象
ReadXml(String)
- ソース:
- DataTable.cs
- ソース:
- DataTable.cs
- ソース:
- DataTable.cs
指定したファイルから、XML スキーマとデータを DataTable に読み込みます。
public:
System::Data::XmlReadMode ReadXml(System::String ^ fileName);
public System.Data.XmlReadMode ReadXml (string fileName);
member this.ReadXml : string -> System.Data.XmlReadMode
Public Function ReadXml (fileName As String) As XmlReadMode
パラメーター
- fileName
- String
データの読み取り元のファイルの名前。
戻り値
データを読み込むために使用する XmlReadMode。
例
次の例では、 DataTable 2 つの列と 10 行を含む を作成します。 この例では、スキーマとデータを DataTable ディスクに書き込みます。 この例では、2 つ目 DataTable の を作成し、 メソッドを ReadXml 呼び出してスキーマとデータを入力します。
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();
}
}
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
注釈
現在 DataTable とその子孫は、指定された 内の という名前のファイルのデータと共に String読み込まれます。 このメソッドの動作は メソッドの DataSet.ReadXml 動作と同じですが、この場合、データは現在のテーブルとその子孫に対してのみ読み込まれます。
メソッドは ReadXml 、データのみ、またはデータとスキーマの両方を XML ドキュメントから に読み取る DataTable 方法を提供します ReadXmlSchema が、メソッドはスキーマのみを読み取ります。
メソッドと WriteXmlSchema メソッドについても、それぞれ同じことが当てはまりますWriteXml。 XML データ、または からスキーマとデータの両方を DataTable
書き込むには、 メソッドを使用します WriteXml
。 スキーマのみを記述するには、 メソッドを使用します WriteXmlSchema
。
注意
InvalidOperationExceptionから読み取られるか 書き込まれる 内のDataRow
列型が を実装し、 を実装IDynamicMetaObjectProviderIXmlSerializableしていない場合は、 がスローされます。
インライン スキーマが指定されている場合、インライン スキーマは、データを読み込む前に既存のリレーショナル構造を拡張するために使用されます。 競合 (たとえば、異なるデータ型で定義されている同じテーブル内の同じ列) がある場合は、例外が発生します。
インライン スキーマが指定されていない場合、リレーショナル構造は、XML ドキュメントの構造に従って、必要に応じて推論によって拡張されます。 すべてのデータを公開するために推論によってスキーマを拡張できない場合は、例外が発生します。
注意
は DataSet
、("_") のような有効な XML 文字がシリアル化された XML でエスケープされている場合、XML 要素を対応する DataColumn
DataTable
要素に関連付けません。 それ自体は DataSet
、XML 要素名内の無効な XML 文字のみをエスケープするため、同じもののみを使用できます。 XML 要素名の有効な文字をエスケープすると、処理中に 要素は無視されます。
using System.Data;
public class A {
static void Main(string[] args) {
DataTable tabl = new DataTable("mytable");
tabl.Columns.Add(new DataColumn("id", typeof(int)));
for (int i = 0; i < 10; i++) {
DataRow row = tabl.NewRow();
row["id"] = i;
tabl.Rows.Add(row);
}
tabl.WriteXml("f.xml", XmlWriteMode.WriteSchema);
DataTable newt = new DataTable();
newt.ReadXml("f.xml");
}
}
こちらもご覧ください
適用対象
ReadXml(XmlReader)
- ソース:
- DataTable.cs
- ソース:
- DataTable.cs
- ソース:
- DataTable.cs
public:
System::Data::XmlReadMode ReadXml(System::Xml::XmlReader ^ reader);
public System.Data.XmlReadMode ReadXml (System.Xml.XmlReader? reader);
public System.Data.XmlReadMode ReadXml (System.Xml.XmlReader reader);
member this.ReadXml : System.Xml.XmlReader -> System.Data.XmlReadMode
Public Function ReadXml (reader As XmlReader) As XmlReadMode
パラメーター
戻り値
データを読み込むために使用する XmlReadMode。
例
次の例では、 DataTable 2 つの列と 10 行を含む を作成します。 この例では、スキーマとデータを DataTable に XmlReader書き込みます。 この例では、2 つ目 DataTable の を作成し、 メソッドを ReadXml 呼び出して、インスタンスのスキーマとデータを XmlReader 入力します。
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();
}
}
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
注釈
現在 DataTable とその子孫は、指定された 内の という名前のファイルのデータと共に XmlReader読み込まれます。 このメソッドの動作は メソッドの ReadXml 動作と同じですが、この場合、データは現在のテーブルとその子孫に対してのみ読み込まれます。
メソッドは ReadXml 、データのみ、またはデータとスキーマの両方を XML ドキュメントから に読み取る DataTable 方法を提供します ReadXmlSchema が、メソッドはスキーマのみを読み取ります。
メソッドと WriteXmlSchema メソッドについても、それぞれ同じことが当てはまりますWriteXml。 XML データ、または からスキーマとデータの両方を DataTable
書き込むには、 メソッドを使用します WriteXml
。 スキーマのみを記述するには、 メソッドを使用します WriteXmlSchema
。
注意
InvalidOperationExceptionから読み取られるか 書き込まれる 内のDataRow
列型が を実装し、 を実装IDynamicMetaObjectProviderIXmlSerializableしていない場合は、 がスローされます。
インライン スキーマが指定されている場合、インライン スキーマは、データを読み込む前に既存のリレーショナル構造を拡張するために使用されます。 競合 (たとえば、異なるデータ型で定義されている同じテーブル内の同じ列) がある場合は、例外が発生します。
インライン スキーマが指定されていない場合、リレーショナル構造は、XML ドキュメントの構造に従って、必要に応じて推論によって拡張されます。 すべてのデータを公開するために推論によってスキーマを拡張できない場合は、例外が発生します。
注意
は DataSet
、("_") のような有効な XML 文字がシリアル化された XML でエスケープされている場合、XML 要素を対応する DataColumn
DataTable
要素に関連付けません。 それ自体は DataSet
、XML 要素名内の無効な XML 文字のみをエスケープするため、同じもののみを使用できます。 XML 要素名の有効な文字をエスケープすると、処理中に 要素は無視されます。
こちらもご覧ください
適用対象
.NET