次の方法で共有


DataSet.WriteXml メソッド (TextWriter, XmlWriteMode)

指定した TextWriterXmlWriteMode を使用して、 DataSet の現在のデータを書き込みます。オプションでスキーマを書き込むこともできます。スキーマを書き込むには、 XMLWriteMode パラメータの値を WriteSchema に設定します。

Overloads Public Sub WriteXml( _
   ByVal writer As TextWriter, _   ByVal mode As XmlWriteMode _)
[C#]
public void WriteXml(TextWriterwriter,XmlWriteModemode);
[C++]
public: void WriteXml(TextWriter* writer,XmlWriteModemode);
[JScript]
public function WriteXml(
   writer : TextWriter,mode : XmlWriteMode);

パラメータ

解説

WriteXml メソッドを使用すると、 DataSet から XML ドキュメントに、データだけ、またはデータとスキーマの両方を書き込むことができます。これに対して、 WriteXmlSchema メソッドは、スキーマだけを書き込みます。データとスキーマの両方を書き込むには、 WriteXmlMode パラメータを WriteSchema に設定します。

それぞれ ReadXml メソッドと ReadXmlSchema メソッドでも同様です。XML データ、またはスキーマとデータの両方を DataSet に読み込むには、 ReadXml メソッドを使用します。スキーマだけを読み込むには、 ReadXmlSchema メソッドを使用します。

使用例

[Visual Basic, C#, C++] 初めに 1 つの DataTable 、2 列、および 10 行で単純な DataSet を作成する例を次に示します。 DataSet のスキーマとデータは、 WriteXml メソッドの呼び出しによってディスクに書き込みます。2 番目の DataSet を作成し、 ReadXml メソッドを使用して、スキーマとデータを格納します。

 
Private Sub DemonstrateReadWriteXMLDocumentWithStreamReader()
    ' Create a DataSet with one table and two columns.
    Dim OriginalDataSet As New DataSet("myDataSet")
    OriginalDataSet.Namespace = "NetFrameWork"
    Dim myTable As New DataTable("myTable")
    Dim c1 As New DataColumn("id", Type.GetType("System.Int32"))
    c1.AutoIncrement = True
    Dim c2 As New DataColumn("item")
    myTable.Columns.Add(c1)
    myTable.Columns.Add(c2)
    OriginalDataSet.Tables.Add(myTable)
    ' Add ten rows.
    Dim newRow As DataRow
    Dim i As Integer
    For i = 0 To 9
        newRow = myTable.NewRow()
        newRow("item") = "item " + i.ToString()
        myTable.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 StreamWriter.
    Dim xmlFilename As String = "myXmlDocument.xml"
    ' Create a new StreamWriter.
    Dim myStreamWriter As New System.IO.StreamWriter(xmlFilename)
    ' Use WriteXml to write the document.
    OriginalDataSet.WriteXml(myStreamWriter)
    ' Close the FileStream.
    myStreamWriter.Close()
       
    ' Dispose of the original DataSet.
    OriginalDataSet.Dispose()
    ' Create a new DataSet.
     Dim newDataSet As New DataSet("New DataSet")
       
    ' Create a StreamReader to read the file.
    Dim myStreamReader As New System.IO.StreamReader(xmlFilename)
    ' Read the XML document into the DataSet.
    newDataSet.ReadXml(myStreamReader)
    ' Close the StreamReader.
    myStreamReader.Close()
     
    ' Print out values of each table in the DataSet using the 
    ' function defined below.
    PrintValues(newDataSet, "New DataSet")
End Sub
   
   
Private Sub PrintValues(ds As DataSet, label As String)
    Console.WriteLine(ControlChars.Cr + label)
    Dim t As DataTable
    For Each t In  ds.Tables
        Console.WriteLine("TableName: " + t.TableName)
        Dim r As DataRow
        For Each r In  t.Rows
            Dim c As DataColumn
            For Each c In  t.Columns
                 Console.Write(ControlChars.Tab + " " + r(c).ToString())
            Next c
               Console.WriteLine()
           Next r
    Next t
End Sub

[C#] 
private void DemonstrateReadWriteXMLDocumentWithStreamReader(){
   // Create a DataSet with one table and two columns.
   DataSet OriginalDataSet = new DataSet("myDataSet");
    OriginalDataSet.Namespace= "NetFrameWork";
   DataTable myTable = new DataTable("myTable");
   DataColumn c1 = new DataColumn("id", Type.GetType("System.Int32"));
   c1.AutoIncrement= true;
   DataColumn c2 = new DataColumn("item");
   myTable.Columns.Add(c1);
   myTable.Columns.Add(c2);
   OriginalDataSet.Tables.Add(myTable);
   // Add ten rows.
   DataRow newRow;
   for(int i = 0; i < 10; i++){
      newRow = myTable.NewRow();
      newRow["item"]= "item " + i;
      myTable.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 StreamWriter.
   string xmlFilename = "myXmlDocument.xml";
   // Create a new StreamWriter.
   System.IO.StreamWriter myStreamWriter = 
      new System.IO.StreamWriter(xmlFilename);
   // Use WriteXml to write the document.
   OriginalDataSet.WriteXml(myStreamWriter);
   // Close the FileStream.
   myStreamWriter.Close();
      
   // Dispose of the original DataSet.
   OriginalDataSet.Dispose();
   // Create a new DataSet.
   DataSet newDataSet = new DataSet("New DataSet");
      
   // Create a StreamReader to read the file.
   System.IO.StreamReader myStreamReader = 
      new System.IO.StreamReader(xmlFilename);
   // Read the XML document into the DataSet.
   newDataSet.ReadXml(myStreamReader);
   // Close the StreamReader.
   myStreamReader.Close();

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

private void PrintValues(DataSet ds, string label){
   Console.WriteLine("\n" + label);
   foreach(DataTable t in ds.Tables){
      Console.WriteLine("TableName: " + t.TableName);
      foreach(DataRow r in t.Rows){
         foreach(DataColumn c in t.Columns){
            Console.Write("\t " + r[c] );
         }
         Console.WriteLine();
      }
   }
}

[C++] 
private:
 void DemonstrateReadWriteXMLDocumentWithStreamReader(){
    // Create a DataSet with one table and two columns.
    DataSet* OriginalDataSet = new DataSet(S"myDataSet");
     OriginalDataSet->Namespace= S"NetFrameWork";
    DataTable* myTable = new DataTable(S"myTable");
    DataColumn* c1 = new DataColumn(S"id", Type::GetType(S"System.Int32"));
    c1->AutoIncrement= true;
    DataColumn* c2 = new DataColumn(S"item");
    myTable->Columns->Add(c1);
    myTable->Columns->Add(c2);
    OriginalDataSet->Tables->Add(myTable);
    // Add ten rows.
    DataRow* newRow;
    for(int i = 0; i < 10; i++){
       newRow = myTable->NewRow();
       newRow->Item[S"item"]= String::Format( S"item {0}", __box(i));
       myTable->Rows->Add(newRow);
    }
    OriginalDataSet->AcceptChanges();
    // Print out values of each table in the DataSet using the 
    // function defined below.
    PrintValues(OriginalDataSet, S"Original DataSet");
    // Write the schema and data to XML file with StreamWriter.
    String* xmlFilename = S"myXmlDocument.xml";
    // Create a new StreamWriter.
    System::IO::StreamWriter* myStreamWriter = 
       new System::IO::StreamWriter(xmlFilename);
    // Use WriteXml to write the document.
    OriginalDataSet->WriteXml(myStreamWriter);
    // Close the FileStream.
    myStreamWriter->Close();
       
    // Dispose of the original DataSet.
    OriginalDataSet->Dispose();
    // Create a new DataSet.
    DataSet* newDataSet = new DataSet(S"New DataSet");
       
    // Create a StreamReader to read the file.
    System::IO::StreamReader* myStreamReader = 
       new System::IO::StreamReader(xmlFilename);
    // Read the XML document into the DataSet.
    newDataSet->ReadXml(myStreamReader);
    // Close the StreamReader.
    myStreamReader->Close();
 
    // Print out values of each table in the DataSet using the 
    // function defined below.
    PrintValues(newDataSet,S"New DataSet");
 }
 
 void PrintValues(DataSet* ds, String* label){
    Console::WriteLine(S"\n{0}", label);
    System::Collections::IEnumerator* myEnum = ds->Tables->GetEnumerator();
    while (myEnum->MoveNext())
    {
       DataTable* t = __try_cast<DataTable*>(myEnum->Current);
       Console::WriteLine(S"TableName: {0}", t->TableName);
       System::Collections::IEnumerator* myEnum1 = t->Rows->GetEnumerator();
       while (myEnum1->MoveNext())
       {
          DataRow* r = __try_cast<DataRow*>(myEnum1->Current);
          System::Collections::IEnumerator* myEnum2 = t->Columns->GetEnumerator();
          while (myEnum2->MoveNext())
          {
             DataColumn* c = __try_cast<DataColumn*>(myEnum2->Current);
             Console::Write(S"\t {0}", r->Item[c] );
          }
          Console::WriteLine();
       }
    }
 }

[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 ファミリ

参照

DataSet クラス | DataSet メンバ | System.Data 名前空間 | DataSet.WriteXml オーバーロードの一覧 | ReadXml | ReadXmlSchema | WriteXml | WriteXmlSchema