DataTable.ReadXml Metoda

Definicja

Odczytuje schemat XML i dane do elementu DataTable.

Przeciążenia

ReadXml(Stream)

Odczytuje schemat XML i dane do DataTable elementu przy użyciu określonego Streamelementu .

ReadXml(TextReader)

Odczytuje schemat XML i dane do DataTable elementu przy użyciu określonego TextReaderelementu .

ReadXml(String)

Odczytuje schemat XML i dane z DataTable określonego pliku.

ReadXml(XmlReader)

Odczytuje schemat XML i dane do DataTable elementu przy użyciu określonego XmlReaderelementu .

Uwagi

Metoda ReadXml umożliwia odczytywanie tylko danych lub zarówno danych, jak i schematu z DataTable dokumentu XML, natomiast ReadXmlSchema metoda odczytuje tylko schemat. Aby odczytać zarówno dane, jak i schemat, użyj jednego z ReadXML przeciążeń zawierających XmlReadMode parametr i ustaw jego wartość na ReadSchema.

Należy pamiętać WriteXml , że to samo dotyczy odpowiednio metod i WriteXmlSchema . Aby zapisać dane XML lub zarówno schemat, jak i dane z klasy DataTable, użyj WriteXml metody . Aby napisać tylko schemat, użyj WriteXmlSchema metody .

Uwaga

Wartość InvalidOperationException zostanie wyrzucona, jeśli typ kolumny jest DataRow odczytywany z lub zapisywany w implementacji IDynamicMetaObjectProvider i nie implementuje IXmlSerializableelementu .

ReadXml(Stream)

Odczytuje schemat XML i dane do DataTable elementu przy użyciu określonego Streamelementu .

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

Parametry

stream
Stream

Obiekt pochodzący z klasy Stream.

Zwraca

XmlReadMode

Element XmlReadMode używany do odczytywania danych.

Przykłady

Poniższy przykład tworzy DataTable obiekt zawierający dwie kolumny i dziesięć wierszy. W przykładzie DataTable schemat i dane są zapisywane w strumieniu pamięci przez wywołanie WriteXml metody . W przykładzie jest tworzona sekunda DataTable i wywołuje metodę ReadXml , aby wypełnić ją schematem i danymi.

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

Uwagi

Bieżący DataTable i jego malejąco są ładowane z danymi z dostarczonego Streamelementu . Zachowanie tej metody jest identyczne z DataSet.ReadXml zachowaniem metody, z tą różnicą, że w tym przypadku dane są ładowane tylko dla bieżącej tabeli i jej elementów podrzędnych.

Metoda ReadXml umożliwia odczytywanie tylko danych lub zarówno danych, jak i schematu z DataTable dokumentu XML, natomiast ReadXmlSchema metoda odczytuje tylko schemat.

Należy pamiętać WriteXml , że to samo dotyczy odpowiednio metod i WriteXmlSchema . Aby zapisać dane XML lub zarówno schemat, jak i dane z klasy DataTable, użyj WriteXml metody . Aby napisać tylko schemat, użyj WriteXmlSchema metody .

Uwaga

Wartość InvalidOperationException zostanie wyrzucona, jeśli typ kolumny jest DataRow odczytywany z lub zapisywany w implementacji IDynamicMetaObjectProvider i nie implementuje IXmlSerializableelementu .

Jeśli zostanie określony schemat wbudowany, schemat wbudowany służy do rozszerzania istniejącej struktury relacyjnej przed załadowaniem danych. Jeśli występują jakiekolwiek konflikty (na przykład ta sama kolumna w tej samej tabeli zdefiniowanej z różnymi typami danych), zgłaszany jest wyjątek.

Jeśli nie określono żadnego schematu wbudowanego, struktura relacyjna jest rozszerzana przez wnioskowanie, w razie potrzeby, zgodnie ze strukturą dokumentu XML. Jeśli nie można rozszerzyć schematu za pomocą wnioskowania w celu uwidocznienia wszystkich danych, zgłaszany jest wyjątek.

Uwaga

Obiekt DataSet nie kojarzy elementu XML z odpowiadającym DataColumn mu znakiem XML lub DataTable gdy znaki XML legalne, takie jak ("_") są zmieniane w serializowanym kodzie XML. Sam sam DataSet w sobie ucieka tylko niedozwolone znaki XML w nazwach elementów XML i dlatego może używać tylko tego samego. Po ucieczce znaków prawnych w nazwie elementu XML element jest ignorowany podczas przetwarzania.

Zobacz też

Dotyczy

ReadXml(TextReader)

Odczytuje schemat XML i dane do DataTable elementu przy użyciu określonego TextReaderelementu .

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

Parametry

reader
TextReader

Element TextReader , który będzie używany do odczytywania danych.

Zwraca

XmlReadMode

Element XmlReadMode używany do odczytywania danych.

Przykłady

Poniższy przykład tworzy DataTable obiekt zawierający dwie kolumny i dziesięć wierszy. Przykład zapisuje DataTable schemat i dane w strumieniu pamięci, wywołując metodę WriteXml . W przykładzie zostanie utworzona sekunda DataTable i wywoła ReadXml metodę , aby wypełnić ją schematem i danymi.

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

Uwagi

Bieżący DataTable i jego malejąco są ładowane z danymi z dostarczonego TextReaderelementu . Zachowanie tej metody jest identyczne z DataSet.ReadXml zachowaniem metody, z tą różnicą, że w tym przypadku dane są ładowane tylko dla bieżącej tabeli i jej elementów podrzędnych.

Metoda ReadXml umożliwia odczytywanie tylko danych lub zarówno danych, jak i schematu z DataTable dokumentu XML, natomiast ReadXmlSchema metoda odczytuje tylko schemat.

Należy pamiętać WriteXml , że to samo dotyczy odpowiednio metod i WriteXmlSchema . Aby zapisać dane XML lub zarówno schemat, jak i dane z klasy DataTable, użyj WriteXml metody . Aby napisać tylko schemat, użyj WriteXmlSchema metody .

Uwaga

Wartość InvalidOperationException zostanie wyrzucona, jeśli typ kolumny jest DataRow odczytywany z lub zapisywany w implementacji IDynamicMetaObjectProvider i nie implementuje IXmlSerializableelementu .

Jeśli zostanie określony schemat wbudowany, schemat wbudowany służy do rozszerzania istniejącej struktury relacyjnej przed załadowaniem danych. Jeśli występują jakiekolwiek konflikty (na przykład ta sama kolumna w tej samej tabeli zdefiniowanej z różnymi typami danych), zgłaszany jest wyjątek.

Jeśli nie określono żadnego schematu wbudowanego, struktura relacyjna jest rozszerzana przez wnioskowanie, w razie potrzeby, zgodnie ze strukturą dokumentu XML. Jeśli nie można rozszerzyć schematu za pomocą wnioskowania w celu uwidocznienia wszystkich danych, zgłaszany jest wyjątek.

Uwaga

Obiekt DataSet nie kojarzy elementu XML z odpowiadającym DataColumn mu znakiem XML lub DataTable gdy znaki XML legalne, takie jak ("_") są zmieniane w serializowanym kodzie XML. Sam sam DataSet w sobie ucieka tylko niedozwolone znaki XML w nazwach elementów XML i dlatego może używać tylko tego samego. Po ucieczce znaków prawnych w nazwie elementu XML element jest ignorowany podczas przetwarzania.

Zobacz też

Dotyczy

ReadXml(String)

Odczytuje schemat XML i dane z DataTable określonego pliku.

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

Parametry

fileName
String

Nazwa pliku, z którego mają być odczytywane dane.

Zwraca

XmlReadMode

Używany XmlReadMode do odczytywania danych.

Przykłady

Poniższy przykład tworzy DataTable dwie kolumny i dziesięć wierszy. Przykład zapisuje DataTable schemat i dane na dysku. W przykładzie zostanie utworzona sekunda DataTable i wywoła ReadXml metodę , aby wypełnić ją schematem i danymi.

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

Uwagi

Bieżący DataTable i jego malejąco są ładowane z danymi z pliku o nazwie w podanym Stringelemencie . Zachowanie tej metody jest identyczne z DataSet.ReadXml zachowaniem metody, z tą różnicą, że w tym przypadku dane są ładowane tylko dla bieżącej tabeli i jej elementów podrzędnych.

Metoda ReadXml zapewnia sposób odczytu tylko danych lub zarówno danych, jak i schematu na DataTable podstawie dokumentu XML, podczas gdy ReadXmlSchema metoda odczytuje tylko schemat.

Należy pamiętać, że to samo dotyczy WriteXml odpowiednio metod i WriteXmlSchema . Aby zapisać dane XML lub zarówno schemat, jak i dane z klasy DataTable, użyj WriteXml metody . Aby napisać tylko schemat, użyj WriteXmlSchema metody .

Uwaga

Zostanie InvalidOperationException zgłoszony, jeśli typ kolumny jest DataRow odczytywany z lub zapisywany do implementacji IDynamicMetaObjectProvider i nie implementuje IXmlSerializable.

Jeśli zostanie określony schemat wbudowany, schemat wbudowany służy do rozszerzania istniejącej struktury relacyjnej przed załadowaniem danych. Jeśli występują konflikty (na przykład ta sama kolumna w tej samej tabeli zdefiniowanej z różnymi typami danych), zostanie zgłoszony wyjątek.

Jeśli nie określono schematu wbudowanego, struktura relacyjna jest rozszerzana poprzez wnioskowanie, w razie potrzeby, zgodnie ze strukturą dokumentu XML. Jeśli nie można rozszerzyć schematu poprzez wnioskowanie w celu uwidocznienia wszystkich danych, zostanie zgłoszony wyjątek.

Uwaga

Element DataSet XML nie jest skojarzony z odpowiadającym mu znakiem DataColumn XML lub DataTable gdy znaki XML prawne, takie jak ("_") są ucieczki w serializowanym pliku XML. Sama sama ucieczka DataSet tylko nielegalnych znaków XML w nazwach elementów XML, dlatego może korzystać tylko z tego samego. Po ucieczce znaków prawnych w nazwie elementu XML element jest ignorowany podczas przetwarzania.

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");  
   }  
}  

Zobacz też

Dotyczy

ReadXml(XmlReader)

Odczytuje schemat XML i dane do DataTable elementu przy użyciu określonego XmlReaderelementu .

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

Parametry

reader
XmlReader

Element XmlReader , który będzie używany do odczytywania danych.

Zwraca

XmlReadMode

Używany XmlReadMode do odczytywania danych.

Przykłady

Poniższy przykład tworzy DataTable dwie kolumny i dziesięć wierszy. W przykładzie jest zapisywany DataTable schemat i dane w obiekcie XmlReader. Przykład tworzy sekundę DataTable i wywołuje ReadXml metodę , aby wypełnić ją schematem i danymi z XmlReader wystąpienia.

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

Uwagi

Bieżący DataTable i jego malejąco są ładowane z danymi z pliku o nazwie w podanym XmlReaderelemencie . Zachowanie tej metody jest identyczne z ReadXml zachowaniem metody, z tą różnicą, że w tym przypadku dane są ładowane tylko dla bieżącej tabeli i jej elementów podrzędnych.

Metoda ReadXml zapewnia sposób odczytu tylko danych lub zarówno danych, jak i schematu na DataTable podstawie dokumentu XML, podczas gdy ReadXmlSchema metoda odczytuje tylko schemat.

Należy pamiętać, że to samo dotyczy WriteXml odpowiednio metod i WriteXmlSchema . Aby zapisać dane XML lub zarówno schemat, jak i dane z klasy DataTable, użyj WriteXml metody . Aby napisać tylko schemat, użyj WriteXmlSchema metody .

Uwaga

Zostanie InvalidOperationException zgłoszony, jeśli typ kolumny jest DataRow odczytywany z lub zapisywany do implementacji IDynamicMetaObjectProvider i nie implementuje IXmlSerializable.

Jeśli zostanie określony schemat wbudowany, schemat wbudowany służy do rozszerzania istniejącej struktury relacyjnej przed załadowaniem danych. Jeśli występują konflikty (na przykład ta sama kolumna w tej samej tabeli zdefiniowanej z różnymi typami danych), zostanie zgłoszony wyjątek.

Jeśli nie określono schematu wbudowanego, struktura relacyjna jest rozszerzana poprzez wnioskowanie, w razie potrzeby, zgodnie ze strukturą dokumentu XML. Jeśli nie można rozszerzyć schematu poprzez wnioskowanie w celu uwidocznienia wszystkich danych, zostanie zgłoszony wyjątek.

Uwaga

Element DataSet XML nie jest skojarzony z odpowiadającym mu znakiem DataColumn XML lub DataTable gdy znaki XML prawne, takie jak ("_") są ucieczki w serializowanym pliku XML. Sama sama ucieczka DataSet tylko nielegalnych znaków XML w nazwach elementów XML, dlatego może korzystać tylko z tego samego. Po ucieczce znaków prawnych w nazwie elementu XML element jest ignorowany podczas przetwarzania.

Zobacz też

Dotyczy