DataSet.ReadXml メソッド

定義

XML スキーマとデータを DataSetに読み取ります。

オーバーロード

名前 説明
ReadXml(XmlReader, XmlReadMode)

指定したXmlReaderXmlReadModeを使用して、XML スキーマとデータをDataSetに読み取ります。

ReadXml(String, XmlReadMode)

指定したファイルとXmlReadModeを使用して、XML スキーマとデータをDataSetに読み取ります。

ReadXml(Stream, XmlReadMode)

指定したStreamXmlReadModeを使用して、XML スキーマとデータをDataSetに読み取ります。

ReadXml(TextReader, XmlReadMode)

指定したTextReaderXmlReadModeを使用して、XML スキーマとデータをDataSetに読み取ります。

ReadXml(String)

指定したファイルを使用して、XML スキーマとデータを DataSet に読み取ります。

ReadXml(TextReader)

指定したTextReaderを使用して、XML スキーマとデータをDataSetに読み取ります。

ReadXml(Stream)

指定したStreamを使用して、XML スキーマとデータをDataSetに読み取ります。

ReadXml(XmlReader)

指定したXmlReaderを使用して、XML スキーマとデータをDataSetに読み取ります。

ReadXml(XmlReader, XmlReadMode)

指定したXmlReaderXmlReadModeを使用して、XML スキーマとデータをDataSetに読み取ります。

public:
 System::Data::XmlReadMode ReadXml(System::Xml::XmlReader ^ reader, System::Data::XmlReadMode mode);
public System.Data.XmlReadMode ReadXml(System.Xml.XmlReader reader, System.Data.XmlReadMode mode);
member this.ReadXml : System.Xml.XmlReader * System.Data.XmlReadMode -> System.Data.XmlReadMode
Public Function ReadXml (reader As XmlReader, mode As XmlReadMode) As XmlReadMode

パラメーター

reader
XmlReader

読み取り元の XmlReader

mode
XmlReadMode

XmlReadMode値の 1 つ。

返品

XmlReadModeデータの読み取りに使用されます。

注釈

ReadXml メソッドは、データのみ、またはデータとスキーマの両方を XML ドキュメントからDataSetに読み取る方法を提供しますが、ReadXmlSchema メソッドはスキーマのみを読み取ります。 データとスキーマの両方を読み取るために、mode パラメーターを含むReadXML オーバーロードのいずれかを使用し、その値を ReadSchema に設定します。

WriteXmlメソッドとWriteXmlSchemaメソッドについても、それぞれ同じことが当てはまります。 XML データ、またはスキーマとデータの両方を DataSetから書き込むには、 WriteXml メソッドを使用します。 スキーマのみを記述するには、 WriteXmlSchema メソッドを使用します。

Note

InvalidOperationExceptionは、IDynamicMetaObjectProviderを実装するために読み取りまたは書き込みを行うDataRow内の列型がIXmlSerializableを実装していない場合にスローされます。

インライン スキーマが指定されている場合、インライン スキーマは、データを読み込む前に既存のリレーショナル構造を拡張するために使用されます。 競合がある場合 (たとえば、異なるデータ型で定義されている同じテーブル内の同じ列)、例外が発生します。

インライン スキーマが指定されていない場合、リレーショナル構造は、XML ドキュメントの構造に従って、必要に応じて推論によって拡張されます。 すべてのデータを公開するために、推論によってスキーマを拡張できない場合は、例外が発生します。

Note

シリアル化された XML で有効な XML 文字 ("_") がエスケープされている場合、 DataSet は XML 要素を対応する DataColumn または DataTable に関連付けません。 DataSet自体は、XML 要素名内の無効な XML 文字のみをエスケープするため、同じもののみを使用できます。 XML 要素名の有効な文字をエスケープすると、処理中に要素は無視されます。

DataSetの XML スキーマにtargetNamespaceが含まれている場合、データが読み取られない可能性があります。また、ReadXmlを呼び出して、修飾された名前空間のない要素を含む XML でDataSetを読み込むときに例外が発生する可能性があります。 修飾されていない要素を読み取 elementFormDefault 、次の例に示すように、XML スキーマで "修飾" に等しい値を設定します。

<xsd:schema id="MyDataSet"
   elementFormDefault="qualified"
   targetNamespace="http://www.tempuri.org/MyDataSet.xsd"
   xmlns="http://www.tempuri.org/MyDataSet.xsd"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
</xsd:schema>

Note

DataSetのスキーマに同じ名前の異なる型の要素が同じ名前空間に含まれている場合、XmlReadMode.ReadSchemaを指定してReadXmlを使用してスキーマをDataSetに読み込もうとすると、例外がスローされます。 .NET Framework バージョン 1.0 を使用している場合、この例外は発生しません。

こちらもご覧ください

適用対象

ReadXml(String, XmlReadMode)

指定したファイルとXmlReadModeを使用して、XML スキーマとデータをDataSetに読み取ります。

public:
 System::Data::XmlReadMode ReadXml(System::String ^ fileName, System::Data::XmlReadMode mode);
public System.Data.XmlReadMode ReadXml(string fileName, System.Data.XmlReadMode mode);
member this.ReadXml : string * System.Data.XmlReadMode -> System.Data.XmlReadMode
Public Function ReadXml (fileName As String, mode As XmlReadMode) As XmlReadMode

パラメーター

fileName
String

読み取るファイル名 (パスを含む)。

mode
XmlReadMode

XmlReadMode値の 1 つ。

返品

XmlReadModeデータの読み取りに使用されます。

例外

FileIOPermissionRead に設定されていません。

注釈

ReadXml メソッドは、データのみ、またはデータとスキーマの両方を XML ドキュメントからDataSetに読み取る方法を提供しますが、ReadXmlSchema メソッドはスキーマのみを読み取ります。 データとスキーマの両方を読み取るために、mode パラメーターを含むReadXML オーバーロードのいずれかを使用し、その値を ReadSchema に設定します。

WriteXmlメソッドとWriteXmlSchemaメソッドについても、それぞれ同じことが当てはまります。 XML データ、またはスキーマとデータの両方を DataSetから書き込むには、 WriteXml メソッドを使用します。 スキーマのみを記述するには、 WriteXmlSchema メソッドを使用します。

Note

InvalidOperationExceptionは、IDynamicMetaObjectProviderを実装するために読み取りまたは書き込みを行うDataRow内の列型がIXmlSerializableを実装していない場合にスローされます。

インライン スキーマが指定されている場合、インライン スキーマは、データを読み込む前に既存のリレーショナル構造を拡張するために使用されます。 競合がある場合 (たとえば、異なるデータ型で定義されている同じテーブル内の同じ列)、例外が発生します。

インライン スキーマが指定されていない場合、リレーショナル構造は、XML ドキュメントの構造に従って、必要に応じて推論によって拡張されます。 すべてのデータを公開するために、推論によってスキーマを拡張できない場合は、例外が発生します。

Note

シリアル化された XML で有効な XML 文字 ("_") がエスケープされている場合、 DataSet は XML 要素を対応する DataColumn または DataTable に関連付けません。 DataSet自体は、XML 要素名内の無効な XML 文字のみをエスケープするため、同じもののみを使用できます。 XML 要素名の有効な文字をエスケープすると、処理中に要素は無視されます。

DataSetの XML スキーマにtargetNamespaceが含まれている場合、データが読み取られない可能性があります。また、ReadXmlを呼び出して、修飾された名前空間のない要素を含む XML でDataSetを読み込むときに例外が発生する可能性があります。 修飾されていない要素を読み取 elementFormDefault 、次の例に示すように、XML スキーマで "修飾" に等しい値を設定します。

<xsd:schema id="MyDataSet"
   elementFormDefault="qualified"
   targetNamespace="http://www.tempuri.org/MyDataSet.xsd"
   xmlns="http://www.tempuri.org/MyDataSet.xsd"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
</xsd:schema>

Note

DataSetのスキーマに同じ名前の異なる型の要素が同じ名前空間に含まれている場合、XmlReadMode.ReadSchemaを指定してReadXmlを使用してスキーマをDataSetに読み込もうとすると、例外がスローされます。 .NET Framework バージョン 1.0 を使用している場合、この例外は発生しません。

こちらもご覧ください

適用対象

ReadXml(Stream, XmlReadMode)

指定したStreamXmlReadModeを使用して、XML スキーマとデータをDataSetに読み取ります。

public:
 System::Data::XmlReadMode ReadXml(System::IO::Stream ^ stream, System::Data::XmlReadMode mode);
public System.Data.XmlReadMode ReadXml(System.IO.Stream stream, System.Data.XmlReadMode mode);
member this.ReadXml : System.IO.Stream * System.Data.XmlReadMode -> System.Data.XmlReadMode
Public Function ReadXml (stream As Stream, mode As XmlReadMode) As XmlReadMode

パラメーター

stream
Stream

読み取り元の Stream

mode
XmlReadMode

XmlReadMode値の 1 つ。

返品

XmlReadModeデータの読み取りに使用されます。

注釈

ReadXml メソッドは、データのみ、またはデータとスキーマの両方を XML ドキュメントからDataSetに読み取る方法を提供しますが、ReadXmlSchema メソッドはスキーマのみを読み取ります。 データとスキーマの両方を読み取るために、mode パラメーターを含むReadXML オーバーロードのいずれかを使用し、その値を ReadSchema に設定します。

WriteXmlメソッドとWriteXmlSchemaメソッドについても同様です。 XML データ、またはスキーマとデータの両方を DataSetから書き込むには、 WriteXml メソッドを使用します。 スキーマのみを記述するには、 WriteXmlSchema メソッドを使用します。

Note

ReadXmlを使用し、XmlReadModeDiffgramに設定すると、diffgram の生成と処理方法により、ターゲット DataSetと元のDataSetの内容が異なる場合があります。 diffgram の詳細については、「 DiffGrams」を参照してください。

Note

InvalidOperationExceptionは、IDynamicMetaObjectProviderを実装するために読み取りまたは書き込みを行うDataRow内の列型がIXmlSerializableを実装していない場合にスローされます。

インライン スキーマが指定されている場合、インライン スキーマは、データを読み込む前に既存のリレーショナル構造を拡張するために使用されます。 競合がある場合 (たとえば、異なるデータ型で定義されている同じテーブル内の同じ列)、例外が発生します。

インライン スキーマが指定されていない場合、リレーショナル構造は、XML ドキュメントの構造に従って、必要に応じて推論によって拡張されます。 すべてのデータを公開するために、推論によってスキーマを拡張できない場合は、例外が発生します。

Note

シリアル化された XML で有効な XML 文字 ("_") がエスケープされている場合、 DataSet は XML 要素を対応する DataColumn または DataTable に関連付けません。 DataSet自体は、XML 要素名内の無効な XML 文字のみをエスケープするため、同じもののみを使用できます。 XML 要素名の有効な文字をエスケープすると、処理中に要素は無視されます。

DataSetの XML スキーマにtargetNamespaceが含まれている場合、データが読み取られない可能性があります。また、ReadXmlを呼び出して、修飾された名前空間のない要素を含む XML でDataSetを読み込むときに例外が発生する可能性があります。 修飾されていない要素を読み取 elementFormDefault 、次の例に示すように、XML スキーマで "修飾" に等しい値を設定します。

<xsd:schema id="MyDataSet"
   elementFormDefault="qualified"
   targetNamespace="http://www.tempuri.org/MyDataSet.xsd"
   xmlns="http://www.tempuri.org/MyDataSet.xsd"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
</xsd:schema>

Note

DataSetのスキーマに同じ名前の異なる型の要素が同じ名前空間に含まれている場合、XmlReadMode.ReadSchemaを指定してReadXmlを使用してスキーマをDataSetに読み込もうとすると、例外がスローされます。 .NET Framework バージョン 1.0 を使用している場合、この例外は発生しません。

こちらもご覧ください

適用対象

ReadXml(TextReader, XmlReadMode)

指定したTextReaderXmlReadModeを使用して、XML スキーマとデータをDataSetに読み取ります。

public:
 System::Data::XmlReadMode ReadXml(System::IO::TextReader ^ reader, System::Data::XmlReadMode mode);
public System.Data.XmlReadMode ReadXml(System.IO.TextReader reader, System.Data.XmlReadMode mode);
member this.ReadXml : System.IO.TextReader * System.Data.XmlReadMode -> System.Data.XmlReadMode
Public Function ReadXml (reader As TextReader, mode As XmlReadMode) As XmlReadMode

パラメーター

reader
TextReader

読み取り元の TextReader

mode
XmlReadMode

XmlReadMode値の 1 つ。

返品

XmlReadModeデータの読み取りに使用されます。

注釈

ReadXml メソッドは、データのみ、またはデータとスキーマの両方を XML ドキュメントからDataSetに読み取る方法を提供しますが、ReadXmlSchema メソッドはスキーマのみを読み取ります。 データとスキーマの両方を読み取るために、mode パラメーターを含むReadXML オーバーロードのいずれかを使用し、その値を ReadSchema に設定します。

WriteXmlメソッドとWriteXmlSchemaメソッドについても、それぞれ同じことが当てはまります。 XML データ、またはスキーマとデータの両方を DataSetから書き込むには、 WriteXml メソッドを使用します。 スキーマのみを記述するには、 WriteXmlSchema メソッドを使用します。

Note

InvalidOperationExceptionは、IDynamicMetaObjectProviderを実装するために読み取りまたは書き込みを行うDataRow内の列型がIXmlSerializableを実装していない場合にスローされます。

インライン スキーマが指定されている場合、インライン スキーマは、データを読み込む前に既存のリレーショナル構造を拡張するために使用されます。 競合がある場合 (たとえば、異なるデータ型で定義されている同じテーブル内の同じ列)、例外が発生します。

インライン スキーマが指定されていない場合、リレーショナル構造は、XML ドキュメントの構造に従って、必要に応じて推論によって拡張されます。 すべてのデータを公開するために、推論によってスキーマを拡張できない場合は、例外が発生します。

Note

シリアル化された XML で有効な XML 文字 ("_") がエスケープされている場合、 DataSet は XML 要素を対応する DataColumn または DataTable に関連付けません。 DataSet自体は、XML 要素名内の無効な XML 文字のみをエスケープするため、同じもののみを使用できます。 XML 要素名の有効な文字をエスケープすると、処理中に要素は無視されます。

DataSetの XML スキーマにtargetNamespaceが含まれている場合、データが読み取られない可能性があります。また、ReadXmlを呼び出して、修飾された名前空間のない要素を含む XML でDataSetを読み込むときに例外が発生する可能性があります。 修飾されていない要素を読み取 elementFormDefault 、次の例に示すように、XML スキーマで "修飾" に等しい値を設定します。

<xsd:schema id="MyDataSet"
   elementFormDefault="qualified"
   targetNamespace="http://www.tempuri.org/MyDataSet.xsd"
   xmlns="http://www.tempuri.org/MyDataSet.xsd"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
</xsd:schema>

Note

DataSetのスキーマに同じ名前の異なる型の要素が同じ名前空間に含まれている場合、XmlReadMode.ReadSchemaを指定してReadXmlを使用してスキーマをDataSetに読み込もうとすると、例外がスローされます。 .NET Framework バージョン 1.0 を使用している場合、この例外は発生しません。

こちらもご覧ください

適用対象

ReadXml(String)

指定したファイルを使用して、XML スキーマとデータを DataSet に読み取ります。

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データの読み取りに使用されます。

例外

FileIOPermissionRead に設定されていません。

次の例では、最初に 1 つのDataTable、2 つの列、10 行の単純なDataSetを作成します。 DataSet スキーマとデータは、WriteXml メソッドを呼び出すことによってディスクに書き込まれます。 2 つ目の DataSet が作成され、 ReadXml メソッドを使用してスキーマとデータを入力します。

private void DemonstrateReadWriteXMLDocumentWithStreamReader()
{
    // Create a DataSet with one table and two columns.
    DataSet OriginalDataSet = new DataSet("dataSet");
    OriginalDataSet.Namespace= "NetFrameWork";
    DataTable table = new DataTable("table");
    DataColumn idColumn = new DataColumn("id",
        Type.GetType("System.Int32"));
    idColumn.AutoIncrement= true;

    DataColumn itemColumn = new DataColumn("item");
    table.Columns.Add(idColumn);
    table.Columns.Add(itemColumn);
    OriginalDataSet.Tables.Add(table);

    // Add ten rows.
    DataRow newRow;
    for(int i = 0; i < 10; i++)
    {
        newRow = table.NewRow();
        newRow["item"]= "item " + i;
        table.Rows.Add(newRow);
    }
    OriginalDataSet.AcceptChanges();

    // Print out values of each table in the DataSet
    // using the function defined below.
    PrintValues(OriginalDataSet, "Original DataSet");

    // Write the schema and data to an XML file.
    string xmlFilename = "XmlDocument.xml";

    // Use WriteXml to write the document.
    OriginalDataSet.WriteXml(xmlFilename);

    // Dispose of the original DataSet.
    OriginalDataSet.Dispose();

    // Create a new DataSet.
    DataSet newDataSet = new DataSet("New DataSet");

    // Read the XML document into the DataSet.
    newDataSet.ReadXml(xmlFilename);

    // Print out values of each table in the DataSet
    // using the function defined below.
    PrintValues(newDataSet,"New DataSet");
}

private void PrintValues(DataSet dataSet, string label)
{
    Console.WriteLine("\n" + label);
    foreach(DataTable table in dataSet.Tables)
    {
        Console.WriteLine("TableName: " + table.TableName);
        foreach(DataRow row in table.Rows)
        {
            foreach(DataColumn column in table.Columns)
            {
                Console.Write("\table " + row[column] );
            }
            Console.WriteLine();
        }
    }
}
Private Sub DemonstrateReadWriteXMLDocumentWithStreamReader()
    ' Create a DataSet with one table and two columns.
    Dim OriginalDataSet As New DataSet("dataSet")
    OriginalDataSet.Namespace = "NetFrameWork"
    Dim table As New DataTable("table")
    Dim idColumn As New DataColumn("id", _
        Type.GetType("System.Int32"))
    idColumn.AutoIncrement = True

    Dim itemColumn As New DataColumn("item")
    table.Columns.Add(idColumn)
    table.Columns.Add(itemColumn)
    OriginalDataSet.Tables.Add(table)

    ' Add ten rows.
    Dim newRow As DataRow
    Dim i As Integer
    For i = 0 To 9
        newRow = table.NewRow()
        newRow("item") = "item " & i.ToString()
        table.Rows.Add(newRow)
    Next i
    OriginalDataSet.AcceptChanges()

    ' Print out values of each table in the DataSet 
    ' using the function defined below.
    PrintValues(OriginalDataSet, "Original DataSet")

    ' Write the schema and data to an XML file.
    Dim xmlFilename As String = "XmlDocument.xml"

    ' Use WriteXml to write the document.
    OriginalDataSet.WriteXml(xmlFilename)

    ' Dispose of the original DataSet.
    OriginalDataSet.Dispose()

    ' Create a new DataSet.
    Dim newDataSet As New DataSet("New DataSet")

    ' Read the XML document into the DataSet.
    newDataSet.ReadXml(xmlFilename)

    ' Print out values of each table in the DataSet 
    ' using the function defined below.
    PrintValues(newDataSet, "New DataSet")
End Sub
    
Private Sub PrintValues(dataSet As DataSet, label As String)
    Console.WriteLine(ControlChars.Cr & label)
    Dim table As DataTable
    For Each table In  dataSet.Tables
        Console.WriteLine("TableName: " & table.TableName)
        Dim row As DataRow
        For Each row In  table.Rows
            Dim column As DataColumn
            For Each column In  table.Columns
                Console.Write(ControlChars.Tab & " " & _
                    row(column).ToString())
            Next column
            Console.WriteLine()
        Next row
    Next table
End Sub

注釈

ReadXml メソッドは、データのみ、またはデータとスキーマの両方を XML ドキュメントからDataSetに読み取る方法を提供しますが、ReadXmlSchema メソッドはスキーマのみを読み取ります。 データとスキーマの両方を読み取るために、mode パラメーターを含むReadXML オーバーロードのいずれかを使用し、その値を ReadSchema に設定します。

WriteXmlメソッドとWriteXmlSchemaメソッドについても、それぞれ同じことが当てはまります。 XML データ、またはスキーマとデータの両方を DataSetから書き込むには、 WriteXml メソッドを使用します。 スキーマのみを記述するには、 WriteXmlSchema メソッドを使用します。

Note

InvalidOperationExceptionは、IDynamicMetaObjectProviderを実装するために読み取りまたは書き込みを行うDataRow内の列型がIXmlSerializableを実装していない場合にスローされます。

インライン スキーマが指定されている場合、インライン スキーマは、データを読み込む前に既存のリレーショナル構造を拡張するために使用されます。 競合がある場合 (たとえば、異なるデータ型で定義されている同じテーブル内の同じ列)、例外が発生します。

インライン スキーマが指定されていない場合、リレーショナル構造は、XML ドキュメントの構造に従って、必要に応じて推論によって拡張されます。 すべてのデータを公開するために、推論によってスキーマを拡張できない場合は、例外が発生します。

Note

シリアル化された XML で有効な XML 文字 ("_") がエスケープされている場合、 DataSet は XML 要素を対応する DataColumn または DataTable に関連付けません。 DataSet自体は、XML 要素名内の無効な XML 文字のみをエスケープするため、同じもののみを使用できます。 XML 要素名の有効な文字をエスケープすると、処理中に要素は無視されます。

DataSetの XML スキーマにtargetNamespaceが含まれている場合、データが読み取られない可能性があります。また、ReadXmlを呼び出して、修飾された名前空間のない要素を含む XML でDataSetを読み込むときに例外が発生する可能性があります。 修飾されていない要素を読み取 elementFormDefault 、次の例に示すように、XML スキーマで "修飾" に等しい値を設定します。

<xsd:schema id="MyDataSet"
   elementFormDefault="qualified"
   targetNamespace="http://www.tempuri.org/MyDataSet.xsd"
   xmlns="http://www.tempuri.org/MyDataSet.xsd"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
</xsd:schema>

Note

DataSetのスキーマに同じ名前の異なる型の要素が同じ名前空間に含まれている場合、XmlReadMode.ReadSchemaを指定してReadXmlを使用してスキーマをDataSetに読み込もうとすると、例外がスローされます。 .NET Framework バージョン 1.0 を使用している場合、この例外は発生しません。

こちらもご覧ください

適用対象

ReadXml(TextReader)

指定したTextReaderを使用して、XML スキーマとデータをDataSetに読み取ります。

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データの読み取りに使用されます。

次の例では、最初に 1 つのDataTable、2 つの列、10 行の単純なDataSetを作成します。 DataSet スキーマとデータは、WriteXml メソッドを呼び出すことによってディスクに書き込まれます。 2 つ目の DataSet が作成され、 ReadXml メソッドを使用してスキーマとデータを入力します。

private void DemonstrateReadWriteXMLDocumentWithFileStream()
{
    // Create a DataSet with one table and two columns.
    DataSet originalDataSet = new DataSet("dataSet");
    DataTable table = new DataTable("table");
    DataColumn idColumn = new DataColumn("id",
        Type.GetType("System.Int32"));
    idColumn.AutoIncrement= true;

    DataColumn itemColumn = new DataColumn("item");
    table.Columns.Add(idColumn);
    table.Columns.Add(itemColumn);
    originalDataSet.Tables.Add(table);
    // Add ten rows.

    DataRow newRow;
    for(int i = 0; i < 10; i++)
    {
        newRow = table.NewRow();
        newRow["item"]= "item " + i;
        table.Rows.Add(newRow);
    }
    originalDataSet.AcceptChanges();

    // Print out values of each table in the DataSet
    // using the function defined below.
    PrintValues(originalDataSet, "Original DataSet");

    // Write the schema and data to XML file with FileStream.
    string xmlFilename = "XmlDocument.xml";
    System.IO.FileStream streamWrite = new System.IO.FileStream
        (xmlFilename, System.IO.FileMode.Create);

    // Use WriteXml to write the XML document.
    originalDataSet.WriteXml(streamWrite);

    // Close the FileStream.
    streamWrite.Close();

    // Dispose of the original DataSet.
    originalDataSet.Dispose();
    // Create a new DataSet.
    DataSet newDataSet = new DataSet("New DataSet");

    // Read the XML document back in.
    // Create new FileStream to read schema with.
    System.IO.FileStream streamRead = new System.IO.FileStream
        (xmlFilename,System.IO.FileMode.Open);
    newDataSet.ReadXml(streamRead);

    // Print out values of each table in the DataSet
    // using the function defined below.
    PrintValues(newDataSet,"New DataSet");
}

private void PrintValues(DataSet dataSet, string label)
{
    Console.WriteLine("\n" + label);
    foreach(DataTable table in dataSet.Tables)
    {
        Console.WriteLine("TableName: " + table.TableName);
        foreach(DataRow row in table.Rows)
        {
            foreach(DataColumn column in table.Columns)
            {
                Console.Write("\table " + row[column] );
            }
            Console.WriteLine();
        }
    }
}
Private Sub DemonstrateReadWriteXMLDocumentWithFileStream()
    ' Create a DataSet with one table and two columns.
    Dim originalDataSet As New DataSet("dataSet")
    Dim table As New DataTable("table")
    Dim idColumn As New DataColumn("id", _
       Type.GetType("System.Int32"))
    idColumn.AutoIncrement = True

    Dim itemColumn As New DataColumn("item")
    table.Columns.Add(idColumn)
    table.Columns.Add(itemColumn)
    originalDataSet.Tables.Add(table)

    ' Add ten rows.
    Dim newRow As DataRow
    Dim i As Integer
    For i = 0 To 9
        newRow = table.NewRow()
        newRow("item") = "item " & i.ToString()
        table.Rows.Add(newRow)
    Next i
    originalDataSet.AcceptChanges()

    ' Print out values of each table in the DataSet 
    ' using the function defined below.
    PrintValues(originalDataSet, "Original DataSet")

    ' Write the schema and data to XML file with FileStream.
    Dim xmlFilename As String = "XmlDocument.xml"
    Dim streamWrite As New System.IO.FileStream _
       (xmlFilename, System.IO.FileMode.Create)

    ' Use WriteXml to write the XML document.
    originalDataSet.WriteXml(streamWrite)

    ' Close the FileStream.
    streamWrite.Close()
     
    ' Dispose of the original DataSet.
    originalDataSet.Dispose()
    ' Create a new DataSet.
    Dim newDataSet As New DataSet("New DataSet")
       
    ' Read the XML document back in. 
    ' Create new FileStream to read schema with.
    Dim streamRead As New System.IO.FileStream _
       (xmlFilename, System.IO.FileMode.Open)
     
    newDataSet.ReadXml(streamRead)
    ' Print out values of each table in the DataSet  
    ' using the function defined below.
    PrintValues(newDataSet, "New DataSet")
End Sub
   
Private Sub PrintValues(dataSet As DataSet, label As String)
    Console.WriteLine(ControlChars.Cr & label)
    Dim table As DataTable
    Dim row As DataRow
    Dim column As DataColumn
    For Each table In  dataSet.Tables
        Console.WriteLine("TableName: " & table.TableName)         
        For Each row In  table.Rows             
            For Each column In  table.Columns
                Console.Write(ControlChars.Tab & " " & _
                   row(column).ToString())
            Next column
            Console.WriteLine()
        Next row
    Next table
End Sub

注釈

ReadXml メソッドは、データのみ、またはデータとスキーマの両方を XML ドキュメントからDataSetに読み取る方法を提供しますが、ReadXmlSchema メソッドはスキーマのみを読み取ります。 データとスキーマの両方を読み取るために、mode パラメーターを含むReadXML オーバーロードのいずれかを使用し、その値を ReadSchema に設定します。

WriteXmlメソッドとWriteXmlSchemaメソッドについても、それぞれ同じことが当てはまります。 XML データ、またはスキーマとデータの両方を DataSetから書き込むには、 WriteXml メソッドを使用します。 スキーマのみを記述するには、 WriteXmlSchema メソッドを使用します。

Note

InvalidOperationExceptionは、IDynamicMetaObjectProviderを実装するために読み取りまたは書き込みを行うDataRow内の列型がIXmlSerializableを実装していない場合にスローされます。

インライン スキーマが指定されている場合、インライン スキーマは、データを読み込む前に既存のリレーショナル構造を拡張するために使用されます。 競合がある場合 (たとえば、異なるデータ型で定義されている同じテーブル内の同じ列)、例外が発生します。

インライン スキーマが指定されていない場合、リレーショナル構造は、XML ドキュメントの構造に従って、必要に応じて推論によって拡張されます。 すべてのデータを公開するために、推論によってスキーマを拡張できない場合は、例外が発生します。

Note

シリアル化された XML で有効な XML 文字 ("_") がエスケープされている場合、 DataSet は XML 要素を対応する DataColumn または DataTable に関連付けません。 DataSet自体は、XML 要素名内の無効な XML 文字のみをエスケープするため、同じもののみを使用できます。 XML 要素名の有効な文字をエスケープすると、処理中に要素は無視されます。

DataSetの XML スキーマにtargetNamespaceが含まれている場合、データが読み取られない可能性があります。また、ReadXmlを呼び出して、修飾された名前空間のない要素を含む XML でDataSetを読み込むときに例外が発生する可能性があります。 修飾されていない要素を読み取 elementFormDefault 、次の例に示すように、XML スキーマで "修飾" に等しい値を設定します。

<xsd:schema id="MyDataSet"
   elementFormDefault="qualified"
   targetNamespace="http://www.tempuri.org/MyDataSet.xsd"
   xmlns="http://www.tempuri.org/MyDataSet.xsd"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
</xsd:schema>

TextReader クラスから継承するクラスには、StreamReaderクラスとStringReader クラスが含まれます。

Note

DataSetのスキーマに同じ名前の異なる型の要素が同じ名前空間に含まれている場合、XmlReadMode.ReadSchemaを指定してReadXmlを使用してスキーマをDataSetに読み込もうとすると、例外がスローされます。 .NET Framework バージョン 1.0 を使用している場合、この例外は発生しません。

こちらもご覧ください

適用対象

ReadXml(Stream)

指定したStreamを使用して、XML スキーマとデータをDataSetに読み取ります。

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

パラメーター

stream
Stream

Streamから派生するオブジェクト。

返品

XmlReadModeデータの読み取りに使用されます。

次の例では、最初に 1 つのDataTable、2 つの列、10 行の単純なDataSetを作成します。 DataSet スキーマとデータは、WriteXml メソッドを呼び出すことによってディスクに書き込まれます。 2 つ目の DataSet が作成され、 ReadXml メソッドを使用してスキーマとデータを入力します。

private void DemonstrateReadWriteXMLDocumentWithFileStream()
{
    // Create a DataSet with one table and two columns.
    DataSet originalDataSet = new DataSet("dataSet");
    DataTable table = new DataTable("table");
    DataColumn idColumn = new DataColumn("id",
        Type.GetType("System.Int32"));
    idColumn.AutoIncrement= true;

    DataColumn itemColumn = new DataColumn("item");
    table.Columns.Add(idColumn);
    table.Columns.Add(itemColumn);
    originalDataSet.Tables.Add(table);
    // Add ten rows.

    DataRow newRow;
    for(int i = 0; i < 10; i++)
    {
        newRow = table.NewRow();
        newRow["item"]= "item " + i;
        table.Rows.Add(newRow);
    }
    originalDataSet.AcceptChanges();

    // Print out values of each table in the DataSet
    // using the function defined below.
    PrintValues(originalDataSet, "Original DataSet");

    // Write the schema and data to XML file with FileStream.
    string xmlFilename = "XmlDocument.xml";
    System.IO.FileStream streamWrite = new System.IO.FileStream
        (xmlFilename, System.IO.FileMode.Create);

    // Use WriteXml to write the XML document.
    originalDataSet.WriteXml(streamWrite);

    // Close the FileStream.
    streamWrite.Close();

    // Dispose of the original DataSet.
    originalDataSet.Dispose();
    // Create a new DataSet.
    DataSet newDataSet = new DataSet("New DataSet");

    // Read the XML document back in.
    // Create new FileStream to read schema with.
    System.IO.FileStream streamRead = new System.IO.FileStream
        (xmlFilename,System.IO.FileMode.Open);
    newDataSet.ReadXml(streamRead);

    // Print out values of each table in the DataSet
    // using the function defined below.
    PrintValues(newDataSet,"New DataSet");
}

private void PrintValues(DataSet dataSet, string label)
{
    Console.WriteLine("\n" + label);
    foreach(DataTable table in dataSet.Tables)
    {
        Console.WriteLine("TableName: " + table.TableName);
        foreach(DataRow row in table.Rows)
        {
            foreach(DataColumn column in table.Columns)
            {
                Console.Write("\table " + row[column] );
            }
            Console.WriteLine();
        }
    }
}
Private Sub DemonstrateReadWriteXMLDocumentWithFileStream()
    ' Create a DataSet with one table and two columns.
    Dim originalDataSet As New DataSet("dataSet")
    Dim table As New DataTable("table")
    Dim idColumn As New DataColumn("id", _
       Type.GetType("System.Int32"))
    idColumn.AutoIncrement = True

    Dim itemColumn As New DataColumn("item")
    table.Columns.Add(idColumn)
    table.Columns.Add(itemColumn)
    originalDataSet.Tables.Add(table)

    ' Add ten rows.
    Dim newRow As DataRow
    Dim i As Integer
    For i = 0 To 9
        newRow = table.NewRow()
        newRow("item") = "item " & i.ToString()
        table.Rows.Add(newRow)
    Next i
    originalDataSet.AcceptChanges()

    ' Print out values of each table in the DataSet 
    ' using the function defined below.
    PrintValues(originalDataSet, "Original DataSet")

    ' Write the schema and data to XML file with FileStream.
    Dim xmlFilename As String = "XmlDocument.xml"
    Dim streamWrite As New System.IO.FileStream _
       (xmlFilename, System.IO.FileMode.Create)

    ' Use WriteXml to write the XML document.
    originalDataSet.WriteXml(streamWrite)

    ' Close the FileStream.
    streamWrite.Close()
     
    ' Dispose of the original DataSet.
    originalDataSet.Dispose()
    ' Create a new DataSet.
    Dim newDataSet As New DataSet("New DataSet")
       
    ' Read the XML document back in. 
    ' Create new FileStream to read schema with.
    Dim streamRead As New System.IO.FileStream _
       (xmlFilename, System.IO.FileMode.Open)
     
    newDataSet.ReadXml(streamRead)
    ' Print out values of each table in the DataSet  
    ' using the function defined below.
    PrintValues(newDataSet, "New DataSet")
End Sub
   
Private Sub PrintValues(dataSet As DataSet, label As String)
    Console.WriteLine(ControlChars.Cr & label)
    Dim table As DataTable
    Dim row As DataRow
    Dim column As DataColumn
    For Each table In  dataSet.Tables
        Console.WriteLine("TableName: " & table.TableName)         
        For Each row In  table.Rows             
            For Each column In  table.Columns
                Console.Write(ControlChars.Tab & " " & _
                   row(column).ToString())
            Next column
            Console.WriteLine()
        Next row
    Next table
End Sub

注釈

ReadXml メソッドは、データのみ、またはデータとスキーマの両方を XML ドキュメントからDataSetに読み取る方法を提供しますが、ReadXmlSchema メソッドはスキーマのみを読み取ります。 データとスキーマの両方を読み取るために、mode パラメーターを含むReadXML オーバーロードのいずれかを使用し、その値を ReadSchema に設定します。

WriteXmlメソッドとWriteXmlSchemaメソッドについても、それぞれ同じことが当てはまります。 XML データ、またはスキーマとデータの両方を DataSetから書き込むには、 WriteXml メソッドを使用します。 スキーマのみを記述するには、 WriteXmlSchema メソッドを使用します。

Note

InvalidOperationExceptionは、IDynamicMetaObjectProviderを実装するために読み取りまたは書き込みを行うDataRow内の列型がIXmlSerializableを実装していない場合にスローされます。

インライン スキーマが指定されている場合、インライン スキーマは、データを読み込む前に既存のリレーショナル構造を拡張するために使用されます。 競合がある場合 (たとえば、異なるデータ型で定義されている同じテーブル内の同じ列)、例外が発生します。

インライン スキーマが指定されていない場合、リレーショナル構造は、XML ドキュメントの構造に従って、必要に応じて推論によって拡張されます。 すべてのデータを公開するために、推論によってスキーマを拡張できない場合は、例外が発生します。

Note

シリアル化された XML で有効な XML 文字 ("_") がエスケープされている場合、 DataSet は XML 要素を対応する DataColumn または DataTable に関連付けません。 DataSet自体は、XML 要素名内の無効な XML 文字のみをエスケープするため、同じもののみを使用できます。 XML 要素名の有効な文字をエスケープすると、処理中に要素は無視されます。

DataSetの XML スキーマにtargetNamespaceが含まれている場合、データが読み取られない可能性があります。また、ReadXmlを呼び出して、修飾された名前空間のない要素を含む XML でDataSetを読み込むときに例外が発生する可能性があります。 次の例に示すように、修飾されていない要素を読み取 elementFormDefault XML スキーマで "修飾" に等しい値に設定します。

<xsd:schema id="MyDataSet"
   elementFormDefault="qualified"
   targetNamespace="http://www.tempuri.org/MyDataSet.xsd"
   xmlns="http://www.tempuri.org/MyDataSet.xsd"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
</xsd:schema>

Note

DataSetのスキーマに同じ名前の異なる型の要素が同じ名前空間に含まれている場合、XmlReadMode.ReadSchemaを指定してReadXmlを使用してスキーマをDataSetに読み込もうとすると、例外がスローされます。 .NET Framework バージョン 1.0 を使用している場合、この例外は発生しません。

こちらもご覧ください

適用対象

ReadXml(XmlReader)

指定したXmlReaderを使用して、XML スキーマとデータをDataSetに読み取ります。

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

パラメーター

reader
XmlReader

読み取り元の XmlReader

返品

XmlReadModeデータの読み取りに使用されます。

次の例では、最初に 1 つのDataTable、2 つの列、10 行の単純なDataSetを作成します。 DataSet スキーマとデータは、WriteXml メソッドを呼び出すことによってディスクに書き込まれます。 2 つ目の DataSet が作成され、 ReadXml メソッドを使用してスキーマとデータを入力します。

private void DemonstrateReadWriteXMLDocumentWithXMLReader()
{
    // Create a DataSet with one table and two columns.
    DataSet OriginalDataSet = new DataSet("dataSet");
    OriginalDataSet.Namespace= "NetFrameWork";
    DataTable table = new DataTable("table");
    DataColumn idColumn = new DataColumn("id",
        Type.GetType("System.Int32"));
    idColumn.AutoIncrement= true;

    DataColumn itemColumn = new DataColumn("item");
    table.Columns.Add(idColumn);
    table.Columns.Add(itemColumn);
    OriginalDataSet.Tables.Add(table);

    // Add ten rows.
    DataRow newRow;
    for(int i = 0; i < 10; i++)
    {
        newRow = table.NewRow();
        newRow["item"]= "item " + i;
        table.Rows.Add(newRow);
    }
    OriginalDataSet.AcceptChanges();

    // Print out values of each table in the DataSet
    // using the function defined below.
    PrintValues(OriginalDataSet, "Original DataSet");

    // Write the XML schema and data to file with FileStream.
    string xmlFilename = "XmlDocument.xml";

    // Create FileStream
    System.IO.FileStream fsWriteXml =
        new System.IO.FileStream
        (xmlFilename, System.IO.FileMode.Create);

    // Create an XmlTextWriter to write the file.
    System.Xml.XmlTextWriter xmlWriter =
        new System.Xml.XmlTextWriter
        (fsWriteXml, System.Text.Encoding.Unicode);

    // Use WriteXml to write the document.
    OriginalDataSet.WriteXml(xmlWriter, XmlWriteMode.WriteSchema);

    // Close the FileStream.
    fsWriteXml.Close();

    // Dispose of the original DataSet.
    OriginalDataSet.Dispose();

    // Create a new DataSet.
    DataSet newDataSet = new DataSet("New DataSet");

    // Read the XML document back in.
    // Create new FileStream to read schema with.
    System.IO.FileStream fsReadXml =
        new System.IO.FileStream
        (xmlFilename, System.IO.FileMode.Open);

    // Create an XmlTextReader to read the file.
    System.Xml.XmlTextReader xmlReader =
        new System.Xml.XmlTextReader(fsReadXml);

    // Read the XML document into the DataSet.
    newDataSet.ReadXml(xmlReader, XmlReadMode.ReadSchema);

    // Close the XmlTextReader
    xmlReader.Close();

    // Print out values of each table in the DataSet
    // fusing the unction defined below.
    PrintValues(newDataSet,"New DataSet");
}

private void PrintValues(DataSet dataSet, string label)
{
    Console.WriteLine("\n" + label);
    foreach(DataTable table in dataSet.Tables)
    {
        Console.WriteLine("TableName: " + table.TableName);
        foreach(DataRow row in table.Rows)
        {
            foreach(DataColumn column in table.Columns)
            {
                Console.Write("\t{0}({1})='{2}'", column.ColumnName, column.DataType.Name, row[column]);
            }
            Console.WriteLine();
        }
    }
}
Private Sub DemonstrateReadWriteXMLDocumentWithXMLReader()
    ' Create a DataSet with one table and two columns.
    Dim OriginalDataSet As New DataSet("dataSet")
    OriginalDataSet.Namespace = "NetFrameWork"
    Dim table As New DataTable("table")
    Dim idColumn As New DataColumn("id", _
        Type.GetType("System.Int32"))
    idColumn.AutoIncrement = True

    Dim itemColumn As New DataColumn("item")
    table.Columns.Add(idColumn)
    table.Columns.Add(itemColumn)
    OriginalDataSet.Tables.Add(table)

    ' Add ten rows.
    Dim newRow As DataRow
    Dim i As Integer
    For i = 0 To 9
        newRow = table.NewRow()
        newRow("item") = "item " & i.ToString()
        table.Rows.Add(newRow)
    Next i
    OriginalDataSet.AcceptChanges()

    ' Print out values of each table in the DataSet 
    ' using the function defined below.
    PrintValues(OriginalDataSet, "Original DataSet")

    ' Write the XML schema and data to file with FileStream.
    Dim xmlFilename As String = "XmlDocument.xml"

    ' Create FileStream    
    Dim fsWriteXml As New System.IO.FileStream _
        (xmlFilename, System.IO.FileMode.Create)

    ' Create an XmlTextWriter to write the file.
    Dim xmlWriter As New System.Xml.XmlTextWriter _
        (fsWriteXml, System.Text.Encoding.Unicode)

    ' Use WriteXml to write the document.
    OriginalDataSet.WriteXml(xmlWriter, XmlWriteMode.WriteSchema)

    ' Close the FileStream.
    fsWriteXml.Close()
        
    ' Dispose of the original DataSet.
    OriginalDataSet.Dispose()

    ' Create a new DataSet.
    Dim newDataSet As New DataSet("New DataSet")
        
    ' Read the XML document back in. 
    ' Create new FileStream to read schema with.
    Dim fsReadXml As New System.IO.FileStream _
        (xmlFilename, System.IO.FileMode.Open)

    ' Create an XmlTextReader to read the file.
    Dim xmlReader As New System.Xml.XmlTextReader(fsReadXml)

    ' Read the XML document into the DataSet.
    newDataSet.ReadXml(xmlReader, XmlReadMode.ReadSchema)

    ' Close the XmlTextReader
    xmlReader.Close()
        
    ' Print out values of each table in the DataSet using the 
    ' function defined below.
    PrintValues(newDataSet, "New DataSet")
End Sub
    
    
 Private Sub PrintValues(dataSet As DataSet, label As String)
     Console.WriteLine(ControlChars.Cr & label)
     Dim table As DataTable
     Dim row As DataRow
     Dim column As DataColumn
     For Each table In  dataSet.Tables
         Console.WriteLine("TableName: " & table.TableName)
         For Each row In  table.Rows
             For Each column In  table.Columns
                 Console.Write(ControlChars.Tab & "{0}({1})='{2}'", column.ColumnName, column.DataType.Name, row(column).ToString())

             Next column
             Console.WriteLine()
         Next row
     Next table
  End Sub

注釈

ReadXml メソッドは、データのみ、またはデータとスキーマの両方を XML ドキュメントからDataSetに読み取る方法を提供しますが、ReadXmlSchema メソッドはスキーマのみを読み取ります。 データとスキーマの両方を読み取るために、mode パラメーターを含むReadXML オーバーロードのいずれかを使用し、その値を ReadSchema に設定します。

WriteXmlメソッドとWriteXmlSchemaメソッドについても、それぞれ同じことが当てはまります。 XML データ、またはスキーマとデータの両方を DataSetから書き込むには、 WriteXml メソッドを使用します。 スキーマのみを記述するには、 WriteXmlSchema メソッドを使用します。

Note

InvalidOperationExceptionは、IDynamicMetaObjectProviderを実装するために読み取りまたは書き込みを行うDataRow内の列型がIXmlSerializableを実装していない場合にスローされます。

インライン スキーマが指定されている場合、インライン スキーマは、データを読み込む前に既存のリレーショナル構造を拡張するために使用されます。 競合がある場合 (たとえば、異なるデータ型で定義されている同じテーブル内の同じ列)、例外が発生します。

インライン スキーマが指定されていない場合、リレーショナル構造は、XML ドキュメントの構造に従って、必要に応じて推論によって拡張されます。 すべてのデータを公開するために、推論によってスキーマを拡張できない場合は、例外が発生します。

Note

シリアル化された XML で有効な XML 文字 ("_") がエスケープされている場合、 DataSet は XML 要素を対応する DataColumn または DataTable に関連付けません。 DataSet自体は、XML 要素名内の無効な XML 文字のみをエスケープするため、同じもののみを使用できます。 XML 要素名の有効な文字をエスケープすると、処理中に要素は無視されます。

DataSetの XML スキーマにtargetNamespaceが含まれている場合、データが読み取られない可能性があります。また、ReadXmlを呼び出して、修飾された名前空間のない要素を含む XML でDataSetを読み込むときに例外が発生する可能性があります。 修飾されていない要素を読み取 elementFormDefault 、次の例に示すように、XML スキーマで "修飾" に等しい値を設定します。

<xsd:schema id="MyDataSet"
   elementFormDefault="qualified"
   targetNamespace="http://www.tempuri.org/MyDataSet.xsd"
   xmlns="http://www.tempuri.org/MyDataSet.xsd"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
</xsd:schema>

System.Xml.XmlTextReader は、XmlReader から継承されます。

Note

DataSetのスキーマに同じ名前の異なる型の要素が同じ名前空間に含まれている場合、XmlReadMode.ReadSchemaを指定してReadXmlを使用してスキーマをDataSetに読み込もうとすると、例外がスローされます。 .NET Framework バージョン 1.0 を使用している場合、この例外は発生しません。

こちらもご覧ください

適用対象