DataTable.ReadXml DataTable.ReadXml DataTable.ReadXml DataTable.ReadXml Method

정의

XML 스키마와 데이터를 DataTable으로 읽어옵니다.Reads XML schema and data into the DataTable.

오버로드

ReadXml(Stream) ReadXml(Stream) ReadXml(Stream)

지정된 DataTable를 사용하여 XML 스키마와 데이터를 Stream으로 읽어옵니다.Reads XML schema and data into the DataTable using the specified Stream.

ReadXml(TextReader) ReadXml(TextReader) ReadXml(TextReader) ReadXml(TextReader)

지정된 DataTable를 사용하여 XML 스키마와 데이터를 TextReader으로 읽어옵니다.Reads XML schema and data into the DataTable using the specified TextReader.

ReadXml(String) ReadXml(String) ReadXml(String) ReadXml(String)

지정된 파일로부터 XML 스키마와 데이터를 DataTable로 읽어옵니다.Reads XML schema and data into the DataTable from the specified file.

ReadXml(XmlReader) ReadXml(XmlReader) ReadXml(XmlReader) ReadXml(XmlReader)

지정된 DataTable를 사용하여 XML 스키마와 데이터를 XmlReader로 읽어옵니다.Reads XML Schema and Data into the DataTable using the specified XmlReader.

설명

합니다 ReadXml 메서드는 데이터와 스키마를를 모두만 데이터를 읽을 수 있는 방법을 제공을 DataTable XML 문서에서 반면는 ReadXmlSchema 메서드는 스키마만 읽습니다.The ReadXml method provides a way to read either data only, or both data and schema into a DataTable from an XML document, whereas the ReadXmlSchema method reads only the schema. 읽기 데이터와 스키마 중 하나를 사용 합니다 ReadXML 포함 하는 오버 로드는 XmlReadMode 매개 변수를 해당 값을 설정 하 고 ReadSchema입니다.To read both data and schema, use one of the ReadXML overloads that include the XmlReadMode parameter, and set its value to ReadSchema.

True는 동일 합니다 WriteXmlWriteXmlSchema 메서드를 각각.Note that the same is true for the WriteXml and WriteXmlSchema methods, respectively. XML 데이터 또는 스키마와 데이터를 작성 하는 DataTable를 사용 하 여를 WriteXml 메서드.To write XML data, or both schema and data from the DataTable, use the WriteXml method. 스키마만를 작성 하려면 사용 된 WriteXmlSchema 메서드.To write just the schema, use the WriteXmlSchema method.

참고

InvalidOperationException 경우의 열 형식에 throw 됩니다 합니다 DataRow 에서 읽거나 쓴 구현 되 IDynamicMetaObjectProvider 구현 하지 않습니다 IXmlSerializable합니다.An InvalidOperationException will be thrown if a column type in the DataRow being read from or written to implements IDynamicMetaObjectProvider and does not implement IXmlSerializable.

ReadXml(Stream) ReadXml(Stream) ReadXml(Stream)

지정된 DataTable를 사용하여 XML 스키마와 데이터를 Stream으로 읽어옵니다.Reads XML schema and data into the DataTable using the specified 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

매개 변수

stream
Stream Stream Stream Stream

Stream에서 파생되는 개체입니다.An object that derives from Stream

반환

데이터를 읽는 데 사용되는 XmlReadMode를 반환합니다.The XmlReadMode used to read the data.

예제

다음 예제에서는 DataTable 두 개의 열과 10 개의 행을 포함 합니다.The following example creates a DataTable containing two columns and ten rows. 이 예제에서는 기록 합니다 DataTable 스키마 및 데이터를 메모리 스트림으로 호출 하 여는 WriteXml 메서드.The example writes the DataTable schema and data to a memory stream, by invoking the WriteXml method. 이 예에서는 두 번째를 만듭니다 DataTable 호출을 ReadXml 스키마 및 데이터를 사용 하 여 입력 하는 방법입니다.The example creates a second DataTable and calls the ReadXml method to fill it with schema and data.

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입니다.The current DataTable and its descendents are loaded with the data from the supplied Stream. 이 메서드의 동작은 동일 합니다는 DataSet.ReadXml 이 경우에 데이터를 제외 하 고 메서드는 현재 테이블 및 해당 하위 항목에 대해서만 로드 됩니다.The behavior of this method is identical to that of the DataSet.ReadXml method, except that in this case, data is loaded only for the current table and its descendants.

합니다 ReadXml 메서드는 데이터와 스키마를를 모두만 데이터를 읽을 수 있는 방법을 제공을 DataTable XML 문서에서 반면는 ReadXmlSchema 메서드는 스키마만 읽습니다.The ReadXml method provides a way to read either data only, or both data and schema into a DataTable from an XML document, whereas the ReadXmlSchema method reads only the schema.

True는 동일 합니다 WriteXmlWriteXmlSchema 메서드를 각각.Note that the same is true for the WriteXml and WriteXmlSchema methods, respectively. XML 데이터 또는 스키마와 데이터를 작성 하는 DataTable를 사용 하 여를 WriteXml 메서드.To write XML data, or both schema and data from the DataTable, use the WriteXml method. 스키마만를 작성 하려면 사용 된 WriteXmlSchema 메서드.To write just the schema, use the WriteXmlSchema method.

참고

InvalidOperationException 경우의 열 형식에 throw 됩니다 합니다 DataRow 에서 읽거나 쓴 구현 되 IDynamicMetaObjectProvider 구현 하지 않습니다 IXmlSerializable합니다.An InvalidOperationException will be thrown if a column type in the DataRow being read from or written to implements IDynamicMetaObjectProvider and does not implement IXmlSerializable.

인라인 스키마를 지정 된 경우 데이터를 로드 하기 전에 기존 관계형 구조를 확장 하는 인라인 스키마 사용 됩니다.If an in-line schema is specified, the in-line schema is used to extend the existing relational structure prior to loading the data. 모든 충돌 (예를 들어 다른 데이터 형식으로 정의 된 동일한 테이블에 동일한 열)이 없으면 예외가 발생 합니다.If there are any conflicts (for example, the same column in the same table defined with different data types) an exception is raised.

없는 인라인 스키마를 지정 하는 경우에 XML 문서의 구조에 따라 관계형 구조 필요에 따라 유추를 통해 확장 됩니다.If no in-line schema is specified, the relational structure is extended through inference, as necessary, according to the structure of the XML document. 스키마를 확장할 수 없으므로 유추를 통해 모든 데이터를 노출 하기 위해 예외가 발생 합니다.If the schema cannot be extended through inference in order to expose all data, an exception is raised.

참고

합니다 DataSet 해당 XML 요소를 연결 하지 않으며 DataColumn 또는 DataTable serialize 된 xml에서 ("")와 같은 유효한 XML 문자는 이스케이프 하는 경우.The DataSet does not associate an XML element with its corresponding DataColumn or DataTable when legal XML characters like ("") are escaped in the serialized XML. DataSet 자체만 XML 요소 이름에 잘못 된 XML 문자를 이스케이프 하며 따라서 사용할 수 있습니다만 동일 합니다.The DataSet itself only escapes illegal XML characters in XML element names and hence can only consume the same. XML 요소 이름에 유효한 문자는 이스케이프 처리 하는 동안 요소가 무시 됩니다.When legal characters in XML element name are escaped, the element is ignored while processing.

추가 정보

ReadXml(TextReader) ReadXml(TextReader) ReadXml(TextReader) ReadXml(TextReader)

지정된 DataTable를 사용하여 XML 스키마와 데이터를 TextReader으로 읽어옵니다.Reads XML schema and data into the DataTable using the specified TextReader.

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 TextReader TextReader

데이터를 읽는 데 사용할 TextReader입니다.The TextReader that will be used to read the data.

반환

데이터를 읽는 데 사용되는 XmlReadMode를 반환합니다.The XmlReadMode used to read the data.

예제

다음 예제에서는 DataTable 두 개의 열과 10 개의 행을 포함 합니다.The following example creates a DataTable containing two columns and ten rows. 이 예제에서는 기록 합니다 DataTable 스키마 및 데이터를 메모리 스트림으로 호출 하 여는 WriteXml 메서드.The example writes the DataTable schema and data to a memory stream, by invoking the WriteXml method. 이 예에서는 두 번째를 만듭니다 DataTable 호출을 ReadXml 스키마 및 데이터를 사용 하 여 입력 하는 방법입니다.The example creates a second DataTable and calls the ReadXml method to fill it with schema and data.

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입니다.The current DataTable and its descendents are loaded with the data from the supplied TextReader. 이 메서드의 동작은 동일 합니다는 DataSet.ReadXml 이 경우에 데이터를 제외 하 고 메서드는 현재 테이블 및 해당 하위 항목에 대해서만 로드 됩니다.The behavior of this method is identical to that of the DataSet.ReadXml method, except that in this case, data is loaded only for the current table and its descendants.

합니다 ReadXml 메서드는 데이터와 스키마를를 모두만 데이터를 읽을 수 있는 방법을 제공을 DataTable XML 문서에서 반면는 ReadXmlSchema 메서드는 스키마만 읽습니다.The ReadXml method provides a way to read either data only, or both data and schema into a DataTable from an XML document, whereas the ReadXmlSchema method reads only the schema.

True는 동일 합니다 WriteXmlWriteXmlSchema 메서드를 각각.Note that the same is true for the WriteXml and WriteXmlSchema methods, respectively. XML 데이터 또는 스키마와 데이터를 작성 하는 DataTable를 사용 하 여를 WriteXml 메서드.To write XML data, or both schema and data from the DataTable, use the WriteXml method. 스키마만를 작성 하려면 사용 된 WriteXmlSchema 메서드.To write just the schema, use the WriteXmlSchema method.

참고

InvalidOperationException 경우의 열 형식에 throw 됩니다 합니다 DataRow 에서 읽거나 쓴 구현 되 IDynamicMetaObjectProvider 구현 하지 않습니다 IXmlSerializable합니다.An InvalidOperationException will be thrown if a column type in the DataRow being read from or written to implements IDynamicMetaObjectProvider and does not implement IXmlSerializable.

인라인 스키마를 지정 된 경우 데이터를 로드 하기 전에 기존 관계형 구조를 확장 하는 인라인 스키마 사용 됩니다.If an in-line schema is specified, the in-line schema is used to extend the existing relational structure prior to loading the data. 모든 충돌 (예를 들어 다른 데이터 형식으로 정의 된 동일한 테이블에 동일한 열)이 없으면 예외가 발생 합니다.If there are any conflicts (for example, the same column in the same table defined with different data types) an exception is raised.

없는 인라인 스키마를 지정 하는 경우에 XML 문서의 구조에 따라 관계형 구조 필요에 따라 유추를 통해 확장 됩니다.If no in-line schema is specified, the relational structure is extended through inference, as necessary, according to the structure of the XML document. 스키마를 확장할 수 없으므로 유추를 통해 모든 데이터를 노출 하기 위해 예외가 발생 합니다.If the schema cannot be extended through inference in order to expose all data, an exception is raised.

참고

합니다 DataSet 해당 XML 요소를 연결 하지 않으며 DataColumn 또는 DataTable serialize 된 xml에서 ("")와 같은 유효한 XML 문자는 이스케이프 하는 경우.The DataSet does not associate an XML element with its corresponding DataColumn or DataTable when legal XML characters like ("") are escaped in the serialized XML. DataSet 자체만 XML 요소 이름에 잘못 된 XML 문자를 이스케이프 하며 따라서 사용할 수 있습니다만 동일 합니다.The DataSet itself only escapes illegal XML characters in XML element names and hence can only consume the same. XML 요소 이름에 유효한 문자는 이스케이프 처리 하는 동안 요소가 무시 됩니다.When legal characters in XML element name are escaped, the element is ignored while processing.

추가 정보

ReadXml(String) ReadXml(String) ReadXml(String) ReadXml(String)

지정된 파일로부터 XML 스키마와 데이터를 DataTable로 읽어옵니다.Reads XML schema and data into the DataTable from the specified file.

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 String String String

데이터를 읽을 파일의 이름입니다.The name of the file from which to read the data.

반환

데이터를 읽는 데 사용되는 XmlReadMode를 반환합니다.The XmlReadMode used to read the data.

예제

다음 예제에서는 DataTable 두 개의 열과 10 개의 행을 포함 합니다.The following example creates a DataTable containing two columns and ten rows. 예제에서는 기록 된 DataTable 스키마와 데이터 디스크를 합니다.The example writes the DataTable schema and data to disk. 이 예에서는 두 번째를 만듭니다 DataTable 호출을 ReadXml 스키마 및 데이터를 사용 하 여 입력 하는 방법입니다.The example creates a second DataTable and calls the ReadXml method to fill it with schema and data.

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입니다.The current DataTable and its descendents are loaded with the data from the file named in the supplied String. 이 메서드의 동작은 동일 합니다는 DataSet.ReadXml 이 경우에 데이터를 제외 하 고 메서드는 현재 테이블 및 해당 하위 항목에 대해서만 로드 됩니다.The behavior of this method is identical to that of the DataSet.ReadXml method, except that in this case, data is loaded only for the current table and its descendants.

합니다 ReadXml 메서드는 데이터와 스키마를를 모두만 데이터를 읽을 수 있는 방법을 제공을 DataTable XML 문서에서 반면는 ReadXmlSchema 메서드는 스키마만 읽습니다.The ReadXml method provides a way to read either data only, or both data and schema into a DataTable from an XML document, whereas the ReadXmlSchema method reads only the schema.

True는 동일 합니다 WriteXmlWriteXmlSchema 메서드를 각각.Note that the same is true for the WriteXml and WriteXmlSchema methods, respectively. XML 데이터 또는 스키마와 데이터를 작성 하는 DataTable를 사용 하 여를 WriteXml 메서드.To write XML data, or both schema and data from the DataTable, use the WriteXml method. 스키마만를 작성 하려면 사용 된 WriteXmlSchema 메서드.To write just the schema, use the WriteXmlSchema method.

참고

InvalidOperationException 경우의 열 형식에 throw 됩니다 합니다 DataRow 에서 읽거나 쓴 구현 되 IDynamicMetaObjectProvider 구현 하지 않습니다 IXmlSerializable합니다.An InvalidOperationException will be thrown if a column type in the DataRow being read from or written to implements IDynamicMetaObjectProvider and does not implement IXmlSerializable.

인라인 스키마를 지정 된 경우 데이터를 로드 하기 전에 기존 관계형 구조를 확장 하는 인라인 스키마 사용 됩니다.If an in-line schema is specified, the in-line schema is used to extend the existing relational structure prior to loading the data. 모든 충돌 (예를 들어 다른 데이터 형식으로 정의 된 동일한 테이블에 동일한 열)이 없으면 예외가 발생 합니다.If there are any conflicts (for example, the same column in the same table defined with different data types) an exception is raised.

없는 인라인 스키마를 지정 하는 경우에 XML 문서의 구조에 따라 관계형 구조 필요에 따라 유추를 통해 확장 됩니다.If no in-line schema is specified, the relational structure is extended through inference, as necessary, according to the structure of the XML document. 스키마를 확장할 수 없으므로 유추를 통해 모든 데이터를 노출 하기 위해 예외가 발생 합니다.If the schema cannot be extended through inference in order to expose all data, an exception is raised.

참고

합니다 DataSet 해당 XML 요소를 연결 하지 않으며 DataColumn 또는 DataTable serialize 된 xml에서 ("")와 같은 유효한 XML 문자는 이스케이프 하는 경우.The DataSet does not associate an XML element with its corresponding DataColumn or DataTable when legal XML characters like ("") are escaped in the serialized XML. DataSet 자체만 XML 요소 이름에 잘못 된 XML 문자를 이스케이프 하며 따라서 사용할 수 있습니다만 동일 합니다.The DataSet itself only escapes illegal XML characters in XML element names and hence can only consume the same. XML 요소 이름에 유효한 문자는 이스케이프 처리 하는 동안 요소가 무시 됩니다.When legal characters in XML element name are escaped, the element is ignored while processing.

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) ReadXml(XmlReader) ReadXml(XmlReader) ReadXml(XmlReader)

지정된 DataTable를 사용하여 XML 스키마와 데이터를 XmlReader로 읽어옵니다.Reads XML Schema and Data into the DataTable using the specified XmlReader.

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 XmlReader XmlReader

데이터를 읽는 데 사용할 XmlReader입니다.The XmlReader that will be used to read the data.

반환

데이터를 읽는 데 사용되는 XmlReadMode를 반환합니다.The XmlReadMode used to read the data.

예제

다음 예제에서는 DataTable 두 개의 열과 10 개의 행을 포함 합니다.The following example creates a DataTable containing two columns and ten rows. 이 예제에서는 기록 합니다 DataTable 스키마와 데이터를는 XmlReader합니다.The example writes the DataTable schema and data to an XmlReader. 이 예에서는 두 번째를 만듭니다 DataTable 호출을 ReadXml 스키마와 데이터로 채우는 방법은 XmlReader 인스턴스.The example creates a second DataTable and calls the ReadXml method to fill it with schema and data from the XmlReader instance.

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입니다.The current DataTable and its descendents are loaded with the data from the file named in the supplied XmlReader. 이 메서드의 동작은 동일 합니다는 ReadXml 이 경우에 데이터를 제외 하 고 메서드는 현재 테이블 및 해당 하위 항목에 대해서만 로드 됩니다.The behavior of this method is identical to that of the ReadXml method, except that in this case, data is loaded only for the current table and its descendants.

합니다 ReadXml 메서드는 데이터와 스키마를를 모두만 데이터를 읽을 수 있는 방법을 제공을 DataTable XML 문서에서 반면는 ReadXmlSchema 메서드는 스키마만 읽습니다.The ReadXml method provides a way to read either data only, or both data and schema into a DataTable from an XML document, whereas the ReadXmlSchema method reads only the schema.

True는 동일 합니다 WriteXmlWriteXmlSchema 메서드를 각각.Note that the same is true for the WriteXml and WriteXmlSchema methods, respectively. XML 데이터 또는 스키마와 데이터를 작성 하는 DataTable를 사용 하 여를 WriteXml 메서드.To write XML data, or both schema and data from the DataTable, use the WriteXml method. 스키마만를 작성 하려면 사용 된 WriteXmlSchema 메서드.To write just the schema, use the WriteXmlSchema method.

참고

InvalidOperationException 경우의 열 형식에 throw 됩니다 합니다 DataRow 에서 읽거나 쓴 구현 되 IDynamicMetaObjectProvider 구현 하지 않습니다 IXmlSerializable합니다.An InvalidOperationException will be thrown if a column type in the DataRow being read from or written to implements IDynamicMetaObjectProvider and does not implement IXmlSerializable.

인라인 스키마를 지정 된 경우 데이터를 로드 하기 전에 기존 관계형 구조를 확장 하는 인라인 스키마 사용 됩니다.If an in-line schema is specified, the in-line schema is used to extend the existing relational structure prior to loading the data. 모든 충돌 (예를 들어 다른 데이터 형식으로 정의 된 동일한 테이블에 동일한 열)이 없으면 예외가 발생 합니다.If there are any conflicts (for example, the same column in the same table defined with different data types) an exception is raised.

없는 인라인 스키마를 지정 하는 경우에 XML 문서의 구조에 따라 관계형 구조 필요에 따라 유추를 통해 확장 됩니다.If no in-line schema is specified, the relational structure is extended through inference, as necessary, according to the structure of the XML document. 스키마를 확장할 수 없으므로 유추를 통해 모든 데이터를 노출 하기 위해 예외가 발생 합니다.If the schema cannot be extended through inference in order to expose all data, an exception is raised.

참고

합니다 DataSet 해당 XML 요소를 연결 하지 않으며 DataColumn 또는 DataTable serialize 된 xml에서 ("")와 같은 유효한 XML 문자는 이스케이프 하는 경우.The DataSet does not associate an XML element with its corresponding DataColumn or DataTable when legal XML characters like ("") are escaped in the serialized XML. DataSet 자체만 XML 요소 이름에 잘못 된 XML 문자를 이스케이프 하며 따라서 사용할 수 있습니다만 동일 합니다.The DataSet itself only escapes illegal XML characters in XML element names and hence can only consume the same. XML 요소 이름에 유효한 문자는 이스케이프 처리 하는 동안 요소가 무시 됩니다.When legal characters in XML element name are escaped, the element is ignored while processing.

추가 정보

적용 대상