DataTable.ReadXml Metódus

Definíció

Beolvassa az XML-sémát és az adatokat a DataTable.

Túlterhelések

Name Description
ReadXml(Stream)

Beolvassa az XML-sémát és az adatokat a DataTable megadott Stream.

ReadXml(TextReader)

Beolvassa az XML-sémát és az adatokat a DataTable megadott TextReader.

ReadXml(String)

Beolvassa az XML-sémát és az adatokat a DataTable megadott fájlba.

ReadXml(XmlReader)

Beolvassa az XML-sémát és az adatokat a DataTable megadott XmlReaderfájlba.

Megjegyzések

A ReadXml módszer lehetővé teszi, hogy csak az adatokat, vagy az adatokat és a sémákat is beolvassa egy DataTable XML-dokumentumba, míg a ReadXmlSchema metódus csak a sémát olvassa be. Az adatok és a séma olvasásához használja a ReadXML paramétert tartalmazó XmlReadMode túlterhelések egyikét, és állítsa az értékét a következőre ReadSchema: .

Vegye figyelembe, hogy ugyanez igaz a metódusokra és WriteXml a WriteXmlSchema metódusokra is. Xml-adatok, illetve sémák DataTableés adatok írásához használja a metódust WriteXml . Ha csak a sémát szeretné írni, használja a metódust WriteXmlSchema .

Note

A InvalidOperationException rendszer akkor küld egy oszloptípust, ha a rendszer beolvassa vagy implementálja DataRow azokatIDynamicMetaObjectProvider, és nem implementálja IXmlSerializableazokat.

ReadXml(Stream)

Forrás:
DataTable.cs
Forrás:
DataTable.cs
Forrás:
DataTable.cs
Forrás:
DataTable.cs
Forrás:
DataTable.cs

Beolvassa az XML-sémát és az adatokat a DataTable megadott Stream.

public:
 System::Data::XmlReadMode ReadXml(System::IO::Stream ^ stream);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Members from serialized types may use dynamic code generation.")]
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")]
public System.Data.XmlReadMode ReadXml(System.IO.Stream? stream);
public System.Data.XmlReadMode ReadXml(System.IO.Stream? stream);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")]
public System.Data.XmlReadMode ReadXml(System.IO.Stream? stream);
public System.Data.XmlReadMode ReadXml(System.IO.Stream stream);
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Members from serialized types may use dynamic code generation.")>]
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")>]
member this.ReadXml : System.IO.Stream -> System.Data.XmlReadMode
member this.ReadXml : System.IO.Stream -> System.Data.XmlReadMode
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")>]
member this.ReadXml : System.IO.Stream -> System.Data.XmlReadMode
Public Function ReadXml (stream As Stream) As XmlReadMode

Paraméterek

stream
Stream

Egy objektum, amely a forrásból Streamszármazik.

Válaszok

Az XmlReadMode adatok olvasásához használt.

Attribútumok

Példák

Az alábbi példa két DataTable oszlopot és tíz sort tartalmaz. A példa a metódus meghívásával írja a DataTable sémát és az WriteXml adatokat egy memóriastreambe. A példa létrehoz egy másodpercet DataTable , és meghívja a ReadXml metódust, hogy sémával és adatokkal töltse ki.

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

Megjegyzések

Az aktuális DataTable és a leszármazottai a megadott Streamadatokkal vannak betöltve. A metódus viselkedése megegyezik a DataSet.ReadXml metódus viselkedésével, kivéve, hogy ebben az esetben az adatok csak az aktuális táblára és annak leszármazottaira lesznek betöltve.

A ReadXml módszer lehetővé teszi, hogy csak az adatokat, vagy az adatokat és a sémákat is beolvassa egy DataTable XML-dokumentumba, míg a ReadXmlSchema metódus csak a sémát olvassa be.

Vegye figyelembe, hogy ugyanez igaz a metódusokra és WriteXml a WriteXmlSchema metódusokra is. Xml-adatok, illetve sémák DataTableés adatok írásához használja a metódust WriteXml . Ha csak a sémát szeretné írni, használja a metódust WriteXmlSchema .

Note

A InvalidOperationException rendszer akkor küld egy oszloptípust, ha a rendszer beolvassa vagy implementálja DataRow azokatIDynamicMetaObjectProvider, és nem implementálja IXmlSerializableazokat.

Ha egy sorba rendezett séma van megadva, a rendszer a soros sémát használja a meglévő relációs struktúra kiterjesztésére az adatok betöltése előtt. Ha ütközések vannak (például ugyanabban a táblában ugyanaz az oszlop különböző adattípusokkal definiálva), kivétel keletkezik.

Ha nincs megadva in-line séma, a relációs struktúra szükség szerint következtetéssel bővül az XML-dokumentum struktúrájának megfelelően. Ha a séma nem bővíthető következtetéssel az összes adat felfedése érdekében, kivétel lép fel.

Note

Az DataSet XML-elemet nem társítja a megfelelőhöz DataColumn , vagy DataTable ha a szerializált XML-fájlban a jogi XML-karakterek (például ("_") feloldódnak. Maga DataSet csak az XML-elemnevekben lévő illegális XML-karaktereket meneküli meg, ezért csak ugyanazt használhatja. Ha az XML-elem nevének jogi karakterei feloldódnak, a rendszer a feldolgozás során figyelmen kívül hagyja az elemet.

Lásd még

A következőre érvényes:

ReadXml(TextReader)

Forrás:
DataTable.cs
Forrás:
DataTable.cs
Forrás:
DataTable.cs
Forrás:
DataTable.cs
Forrás:
DataTable.cs

Beolvassa az XML-sémát és az adatokat a DataTable megadott TextReader.

public:
 System::Data::XmlReadMode ReadXml(System::IO::TextReader ^ reader);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Members from serialized types may use dynamic code generation.")]
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")]
public System.Data.XmlReadMode ReadXml(System.IO.TextReader? reader);
public System.Data.XmlReadMode ReadXml(System.IO.TextReader? reader);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")]
public System.Data.XmlReadMode ReadXml(System.IO.TextReader? reader);
public System.Data.XmlReadMode ReadXml(System.IO.TextReader reader);
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Members from serialized types may use dynamic code generation.")>]
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")>]
member this.ReadXml : System.IO.TextReader -> System.Data.XmlReadMode
member this.ReadXml : System.IO.TextReader -> System.Data.XmlReadMode
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")>]
member this.ReadXml : System.IO.TextReader -> System.Data.XmlReadMode
Public Function ReadXml (reader As TextReader) As XmlReadMode

Paraméterek

reader
TextReader

Az TextReader adatok olvasásához használt adatok.

Válaszok

Az XmlReadMode adatok olvasásához használt.

Attribútumok

Példák

Az alábbi példa két DataTable oszlopot és tíz sort tartalmaz. A példa a metódus meghívásával írja a DataTable sémát és az WriteXml adatokat egy memóriastreambe. A példa létrehoz egy másodpercet DataTable , és meghívja a ReadXml metódust, hogy sémával és adatokkal töltse ki.

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

Megjegyzések

Az aktuális DataTable és a leszármazottai a megadott TextReaderadatokkal vannak betöltve. A metódus viselkedése megegyezik a DataSet.ReadXml metódus viselkedésével, kivéve, hogy ebben az esetben az adatok csak az aktuális táblára és annak leszármazottaira lesznek betöltve.

A ReadXml módszer lehetővé teszi, hogy csak az adatokat, vagy az adatokat és a sémákat is beolvassa egy DataTable XML-dokumentumba, míg a ReadXmlSchema metódus csak a sémát olvassa be.

Vegye figyelembe, hogy ugyanez igaz a metódusokra és WriteXml a WriteXmlSchema metódusokra is. Xml-adatok, illetve sémák DataTableés adatok írásához használja a metódust WriteXml . Ha csak a sémát szeretné írni, használja a metódust WriteXmlSchema .

Note

A InvalidOperationException rendszer akkor küld egy oszloptípust, ha a rendszer beolvassa vagy implementálja DataRow azokatIDynamicMetaObjectProvider, és nem implementálja IXmlSerializableazokat.

Ha egy sorba rendezett séma van megadva, a rendszer a soros sémát használja a meglévő relációs struktúra kiterjesztésére az adatok betöltése előtt. Ha ütközések vannak (például ugyanabban a táblában ugyanaz az oszlop különböző adattípusokkal definiálva), kivétel keletkezik.

Ha nincs megadva in-line séma, a relációs struktúra szükség szerint következtetéssel bővül az XML-dokumentum struktúrájának megfelelően. Ha a séma nem bővíthető következtetéssel az összes adat felfedése érdekében, kivétel lép fel.

Note

Az DataSet XML-elemet nem társítja a megfelelőhöz DataColumn , vagy DataTable ha a szerializált XML-fájlban a jogi XML-karakterek (például ("_") feloldódnak. Maga DataSet csak az XML-elemnevekben lévő illegális XML-karaktereket meneküli meg, ezért csak ugyanazt használhatja. Ha az XML-elem nevének jogi karakterei feloldódnak, a rendszer a feldolgozás során figyelmen kívül hagyja az elemet.

Lásd még

A következőre érvényes:

ReadXml(String)

Forrás:
DataTable.cs
Forrás:
DataTable.cs
Forrás:
DataTable.cs
Forrás:
DataTable.cs
Forrás:
DataTable.cs

Beolvassa az XML-sémát és az adatokat a DataTable megadott fájlba.

public:
 System::Data::XmlReadMode ReadXml(System::String ^ fileName);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Members from serialized types may use dynamic code generation.")]
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")]
public System.Data.XmlReadMode ReadXml(string fileName);
public System.Data.XmlReadMode ReadXml(string fileName);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")]
public System.Data.XmlReadMode ReadXml(string fileName);
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Members from serialized types may use dynamic code generation.")>]
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")>]
member this.ReadXml : string -> System.Data.XmlReadMode
member this.ReadXml : string -> System.Data.XmlReadMode
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")>]
member this.ReadXml : string -> System.Data.XmlReadMode
Public Function ReadXml (fileName As String) As XmlReadMode

Paraméterek

fileName
String

Annak a fájlnak a neve, amelyből beolvassa az adatokat.

Válaszok

Az XmlReadMode adatok olvasásához használt.

Attribútumok

Példák

Az alábbi példa két DataTable oszlopot és tíz sort tartalmaz. A példa a sémát és az DataTable adatokat lemezre írja. A példa létrehoz egy másodpercet DataTable , és meghívja a ReadXml metódust, hogy sémával és adatokkal töltse ki.

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

Megjegyzések

Az aktuális DataTable és a leszármazottai a megadott fájlból származó adatokkal vannak betöltve String. A metódus viselkedése megegyezik a DataSet.ReadXml metódus viselkedésével, kivéve, hogy ebben az esetben az adatok csak az aktuális táblára és annak leszármazottaira lesznek betöltve.

A ReadXml módszer lehetővé teszi, hogy csak az adatokat, vagy az adatokat és a sémákat is beolvassa egy DataTable XML-dokumentumba, míg a ReadXmlSchema metódus csak a sémát olvassa be.

Vegye figyelembe, hogy ugyanez igaz a metódusokra és WriteXml a WriteXmlSchema metódusokra is. Xml-adatok, illetve sémák DataTableés adatok írásához használja a metódust WriteXml . Ha csak a sémát szeretné írni, használja a metódust WriteXmlSchema .

Note

A InvalidOperationException rendszer akkor küld egy oszloptípust, ha a rendszer beolvassa vagy implementálja DataRow azokatIDynamicMetaObjectProvider, és nem implementálja IXmlSerializableazokat.

Ha egy sorba rendezett séma van megadva, a rendszer a soros sémát használja a meglévő relációs struktúra kiterjesztésére az adatok betöltése előtt. Ha ütközések vannak (például ugyanabban a táblában ugyanaz az oszlop különböző adattípusokkal definiálva), kivétel keletkezik.

Ha nincs megadva in-line séma, a relációs struktúra szükség szerint következtetéssel bővül az XML-dokumentum struktúrájának megfelelően. Ha a séma nem bővíthető következtetéssel az összes adat felfedése érdekében, kivétel lép fel.

Note

Az DataSet XML-elemet nem társítja a megfelelőhöz DataColumn , vagy DataTable ha a szerializált XML-fájlban a jogi XML-karakterek (például ("_") feloldódnak. Maga DataSet csak az XML-elemnevekben lévő illegális XML-karaktereket meneküli meg, ezért csak ugyanazt használhatja. Ha az XML-elem nevének jogi karakterei feloldódnak, a rendszer a feldolgozás során figyelmen kívül hagyja az elemet.

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

Lásd még

A következőre érvényes:

ReadXml(XmlReader)

Forrás:
DataTable.cs
Forrás:
DataTable.cs
Forrás:
DataTable.cs
Forrás:
DataTable.cs
Forrás:
DataTable.cs

Beolvassa az XML-sémát és az adatokat a DataTable megadott XmlReaderfájlba.

public:
 System::Data::XmlReadMode ReadXml(System::Xml::XmlReader ^ reader);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Members from serialized types may use dynamic code generation.")]
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")]
public System.Data.XmlReadMode ReadXml(System.Xml.XmlReader? reader);
public System.Data.XmlReadMode ReadXml(System.Xml.XmlReader? reader);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")]
public System.Data.XmlReadMode ReadXml(System.Xml.XmlReader? reader);
public System.Data.XmlReadMode ReadXml(System.Xml.XmlReader reader);
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Members from serialized types may use dynamic code generation.")>]
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")>]
member this.ReadXml : System.Xml.XmlReader -> System.Data.XmlReadMode
member this.ReadXml : System.Xml.XmlReader -> System.Data.XmlReadMode
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Members from serialized types may be trimmed if not referenced directly.")>]
member this.ReadXml : System.Xml.XmlReader -> System.Data.XmlReadMode
Public Function ReadXml (reader As XmlReader) As XmlReadMode

Paraméterek

reader
XmlReader

Az XmlReader adatok olvasásához használt adatok.

Válaszok

Az XmlReadMode adatok olvasásához használt.

Attribútumok

Példák

Az alábbi példa két DataTable oszlopot és tíz sort tartalmaz. A példa a sémát és az DataTable adatokat egy XmlReader. A példa létrehoz egy másodikat DataTable , és meghívja a ReadXml metódust a példány sémájával és adataival való kitöltéséhez XmlReader .

private static void DemonstrateReadWriteXMLDocumentWithReader()
{
    DataTable table = CreateTestTable("XmlDemo");
    PrintValues(table, "Original table");

    // Write the schema and data to XML in a memory stream.
    System.IO.MemoryStream xmlStream = new System.IO.MemoryStream();
    table.WriteXml(xmlStream, XmlWriteMode.WriteSchema);

    // Rewind the memory stream.
    xmlStream.Position = 0;

    System.Xml.XmlTextReader reader =
        new System.Xml.XmlTextReader(xmlStream);
    DataTable newTable = new DataTable();
    newTable.ReadXml(reader);

    // Print out values in the table.
    PrintValues(newTable, "New table");
}

private static DataTable CreateTestTable(string tableName)
{
    // Create a test DataTable with two columns and a few rows.
    DataTable table = new DataTable(tableName);
    DataColumn column = new DataColumn("id", typeof(System.Int32));
    column.AutoIncrement = true;
    table.Columns.Add(column);

    column = new DataColumn("item", typeof(System.String));
    table.Columns.Add(column);

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

    table.AcceptChanges();
    return table;
}

private static void PrintValues(DataTable table, string label)
{
    Console.WriteLine(label);
    foreach (DataRow row in table.Rows)
    {
        foreach (DataColumn column in table.Columns)
        {
            Console.Write("\t{0}", row[column]);
        }
        Console.WriteLine();
    }
}
Private Sub DemonstrateReadWriteXMLDocumentWithReader()
  Dim table As DataTable = CreateTestTable("XmlDemo")
  PrintValues(table, "Original table")

  ' Write the schema and data to XML in a memory stream.
  Dim xmlStream As New System.IO.MemoryStream()
  table.WriteXml(xmlStream, XmlWriteMode.WriteSchema)

  ' Rewind the memory stream.
  xmlStream.Position = 0

  Dim reader As New System.Xml.XmlTextReader(xmlStream)
  Dim newTable As New DataTable
  newTable.ReadXml(reader)

  ' Print out values in the table.
  PrintValues(newTable, "New Table")
End Sub

Private Function CreateTestTable(ByVal tableName As String) _
  As DataTable
  ' Create a test DataTable with two columns and a few rows.
  Dim table As New DataTable(tableName)
  Dim column As New DataColumn("id", GetType(System.Int32))
  column.AutoIncrement = True
  table.Columns.Add(column)

  column = New DataColumn("item", GetType(System.String))
  table.Columns.Add(column)

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

  table.AcceptChanges()
  Return table
End Function

Private Sub PrintValues(ByVal table As DataTable, _
  ByVal label As String)
  Console.WriteLine(label)
  For Each row As DataRow In table.Rows
    For Each column As DataColumn In table.Columns
      Console.Write("{0}{1}", ControlChars.Tab, row(column))
    Next column
    Console.WriteLine()
  Next row
End Sub

Megjegyzések

Az aktuális DataTable és a leszármazottai a megadott fájlból származó adatokkal vannak betöltve XmlReader. A metódus viselkedése megegyezik a ReadXml metódus viselkedésével, kivéve, hogy ebben az esetben az adatok csak az aktuális táblára és annak leszármazottaira lesznek betöltve.

A ReadXml módszer lehetővé teszi, hogy csak az adatokat, vagy az adatokat és a sémákat is beolvassa egy DataTable XML-dokumentumba, míg a ReadXmlSchema metódus csak a sémát olvassa be.

Vegye figyelembe, hogy ugyanez igaz a metódusokra és WriteXml a WriteXmlSchema metódusokra is. Xml-adatok, illetve sémák DataTableés adatok írásához használja a metódust WriteXml . Ha csak a sémát szeretné írni, használja a metódust WriteXmlSchema .

Note

A InvalidOperationException rendszer akkor küld egy oszloptípust, ha a rendszer beolvassa vagy implementálja DataRow azokatIDynamicMetaObjectProvider, és nem implementálja IXmlSerializableazokat.

Ha egy sorba rendezett séma van megadva, a rendszer a soros sémát használja a meglévő relációs struktúra kiterjesztésére az adatok betöltése előtt. Ha ütközések vannak (például ugyanabban a táblában ugyanaz az oszlop különböző adattípusokkal definiálva), kivétel keletkezik.

Ha nincs megadva in-line séma, a relációs struktúra szükség szerint következtetéssel bővül az XML-dokumentum struktúrájának megfelelően. Ha a séma nem bővíthető következtetéssel az összes adat felfedése érdekében, kivétel lép fel.

Note

Az DataSet XML-elemet nem társítja a megfelelőhöz DataColumn , vagy DataTable ha a szerializált XML-fájlban a jogi XML-karakterek (például ("_") feloldódnak. Maga DataSet csak az XML-elemnevekben lévő illegális XML-karaktereket meneküli meg, ezért csak ugyanazt használhatja. Ha az XML-elem nevének jogi karakterei feloldódnak, a rendszer a feldolgozás során figyelmen kívül hagyja az elemet.

Lásd még

A következőre érvényes: