DataTable.ReadXmlSchema 方法

定义

将 XML 架构读入 DataTableReads an XML schema into the DataTable.

重载

ReadXmlSchema(XmlReader)

使用指定的 DataTable 将 XML 架构读入 XmlReaderReads an XML schema into the DataTable using the specified XmlReader.

ReadXmlSchema(String)

从指定的文件将 XML 架构读入 DataTableReads an XML schema into the DataTable from the specified file.

ReadXmlSchema(TextReader)

使用指定的 DataTable 将 XML 架构读入 TextReaderReads an XML schema into the DataTable using the specified TextReader.

ReadXmlSchema(Stream)

使用指定的流将 XML 架构读入 DataTableReads an XML schema into the DataTable using the specified stream.

注解

使用 ReadXmlSchema 方法为 DataTable创建架构。Use the ReadXmlSchema method to create the schema for a DataTable. 此架构包括表、关系和约束定义。The schema includes table, relation, and constraint definitions.

若要将架构写入 XML 文档,请使用 WriteXmlSchema 方法。To write a schema to an XML document, use the WriteXmlSchema method.

根据 XSD 标准解释 XML 架构。The XML schema is interpreted according to the XSD standard.

通常调用 ReadXmlSchema 方法,然后调用用于填充 DataTableReadXml 方法。The ReadXmlSchema method is generally invoked before invoking the ReadXml method which is used to fill the DataTable.

ReadXmlSchema(XmlReader)

使用指定的 DataTable 将 XML 架构读入 XmlReaderReads an XML schema into the DataTable using the specified XmlReader.

public:
 void ReadXmlSchema(System::Xml::XmlReader ^ reader);
public void ReadXmlSchema (System.Xml.XmlReader reader);
member this.ReadXmlSchema : System.Xml.XmlReader -> unit
Public Sub ReadXmlSchema (reader As XmlReader)

参数

reader
XmlReader

用于读取架构信息的 XmlReaderThe XmlReader used to read the schema information.

示例

下面的控制台应用程序创建一个新 DataTable,并将该表的架构写入 MemoryStreamThe following console application creates a new DataTable, and writes the schema for that table to a MemoryStream. 然后,该示例创建一个新的 DataTable,并使用 XmlTextReader (从 XmlReader继承)作为其源,从已保存的 XML 架构读取其架构。Then, the example creates a new DataTable and reads its schema from the saved XML schema, using a XmlTextReader (which inherits from XmlReader) as its source.

private static void DemonstrateReadWriteXMLSchemaWithReader()
{
    DataTable table = CreateTestTable("XmlDemo");
    PrintSchema(table, "Original table");

    // Write the schema to XML in a memory stream.
    System.IO.MemoryStream xmlStream = 
        new System.IO.MemoryStream();
    table.WriteXmlSchema(xmlStream);

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

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

    // Print out values in the table.
    PrintSchema(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 PrintSchema(DataTable table, string label)
{
    // Display the schema of the supplied DataTable:
    Console.WriteLine(label);
    foreach (DataColumn column in table.Columns)
    {
        Console.WriteLine("\t{0}: {1}", column.ColumnName, 
            column.DataType.Name);
    }
    Console.WriteLine();
}
Private Sub DemonstrateReadWriteXMLSchemaWithReader()
  Dim table As DataTable = CreateTestTable("XmlDemo")
  PrintSchema(table, "Original table")

  ' Write the schema to XML in a memory stream.
  Dim xmlStream As New System.IO.MemoryStream()
  table.WriteXmlSchema(xmlStream)

  ' Rewind the memory stream.
  xmlStream.Position = 0

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

  ' Print out values in the table.
  PrintSchema(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 PrintSchema(ByVal table As DataTable, _
      ByVal label As String)
  ' Display the schema of the supplied DataTable:
  Console.WriteLine(label)
  For Each column As DataColumn In table.Columns
    Console.WriteLine("{0}{1}: {2}", ControlChars.Tab, _
      column.ColumnName, column.DataType.Name)
  Next column
End Sub

注解

使用 ReadXmlSchema 方法为 DataTable创建架构。Use the ReadXmlSchema method to create the schema for a DataTable. 此架构包括表、关系和约束定义。The schema includes table, relation, and constraint definitions.

若要将架构写入 XML 文档,请使用 WriteXmlSchema 方法。To write a schema to an XML document, use the WriteXmlSchema method.

根据 XSD 标准解释 XML 架构。The XML schema is interpreted according to the XSD standard.

如果 msdata: DataType 和 xs: type 类型不匹配,则可能发生数据损坏。Data corruption can occur if the msdata:DataType and the xs:type types do not match. 不会引发异常。No exception will be thrown.

通常调用 ReadXmlSchema 方法,然后调用用于填充 DataTableReadXml 方法。The ReadXmlSchema method is generally invoked before invoking the ReadXml method which is used to fill the DataTable.

备注

使用 XML 架构创建嵌套关系的方法是使用隐式嵌套元素。The way to create a nested relation using XML schema is to have implicit nested elements. 此外,也可以将嵌套的关系重新连接到一起使用显式列名称。Additionally, the nested relation could be re-wired, to use explicit column names. 要隐式嵌套元素,以使相应的数据表参与嵌套关系,这是必需的。It is mandatory for elements to be implicitly nested for the corresponding DataTables to participate in a nested relation.

另请参阅

ReadXmlSchema(String)

从指定的文件将 XML 架构读入 DataTableReads an XML schema into the DataTable from the specified file.

public:
 void ReadXmlSchema(System::String ^ fileName);
public void ReadXmlSchema (string fileName);
member this.ReadXmlSchema : string -> unit
Public Sub ReadXmlSchema (fileName As String)

参数

fileName
String

从中读取架构信息的文件的名称。The name of the file from which to read the schema information.

示例

下面的控制台应用程序创建一个新 DataTable,并将该表的架构写入文件。The following console application creates a new DataTable, and writes the schema for that table to a file. 然后,该示例创建一个新 DataTable,并使用该文件作为其源从保存的 XML 架构读取其架构。Then, the example creates a new DataTable and reads its schema from the saved XML schema, using the file as its source.

private static void DemonstrateReadWriteXMLSchemaWithFile()
{
    DataTable table = CreateTestTable("XmlDemo");
    PrintSchema(table, "Original table");

    // Write the schema to XML in a file.
    string xmlFile = "C:\\SchemaDemo.xml";
    table.WriteXmlSchema(xmlFile);

    DataTable newTable = new DataTable();
    newTable.ReadXmlSchema(xmlFile);

    // Print out values in the table.
    PrintSchema(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 PrintSchema(DataTable table, string label)
{
    // Display the schema of the supplied DataTable:
    Console.WriteLine(label);
    foreach (DataColumn column in table.Columns)
    {
        Console.WriteLine("\t{0}: {1}", column.ColumnName, 
            column.DataType.Name);
    }
    Console.WriteLine();
}
Private Sub DemonstrateReadWriteXMLSchemaWithFile()
  Dim table As DataTable = CreateTestTable("XmlDemo")
  PrintSchema(table, "Original table")

  Dim xmlFile As String = "SchemaDemo.xml"

  ' Write the schema to XML.
  table.WriteXmlSchema(xmlFile)

  Dim newTable As New DataTable
  newTable.ReadXmlSchema(xmlFile)

  ' Print out values in the table.
  PrintSchema(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 PrintSchema(ByVal table As DataTable, _
      ByVal label As String)
  ' Display the schema of the supplied DataTable:
  Console.WriteLine(label)
  For Each column As DataColumn In table.Columns
    Console.WriteLine("{0}{1}: {2}", ControlChars.Tab, _
      column.ColumnName, column.DataType.Name)
  Next column
End Sub

注解

使用 ReadXmlSchema 方法为 DataTable创建架构。Use the ReadXmlSchema method to create the schema for a DataTable. 此架构包括表、关系和约束定义。The schema includes table, relation, and constraint definitions.

若要将架构写入 XML 文档,请使用 WriteXmlSchema 方法。To write a schema to an XML document, use the WriteXmlSchema method.

根据 XSD 标准解释 XML 架构。The XML schema is interpreted according to the XSD standard.

如果 msdata: DataType 和 xs: type 类型不匹配,则可能发生数据损坏。Data corruption can occur if the msdata:DataType and the xs:type types do not match. 不会引发异常。No exception will be thrown.

通常调用 ReadXmlSchema 方法,然后调用用于填充 DataTableReadXml 方法。The ReadXmlSchema method is generally invoked before invoking the ReadXml method which is used to fill the DataTable.

若要使用 XML 架构创建嵌套关系,请使用隐式嵌套元素。To create a nested relation using XML schema, use implicit nested elements. 您还可以将嵌套关系重新配置为使用显式列名称。You can also reconfigure the nested relation to use explicit column names. 为了使相应的数据表参与嵌套关系,必须隐式嵌套元素。Elements must be implicitly nested in order for the corresponding DataTables to participate in a nested relation.

另请参阅

ReadXmlSchema(TextReader)

使用指定的 DataTable 将 XML 架构读入 TextReaderReads an XML schema into the DataTable using the specified TextReader.

public:
 void ReadXmlSchema(System::IO::TextReader ^ reader);
public void ReadXmlSchema (System.IO.TextReader reader);
member this.ReadXmlSchema : System.IO.TextReader -> unit
Public Sub ReadXmlSchema (reader As TextReader)

参数

reader
TextReader

用于读取架构信息的 TextReaderThe TextReader used to read the schema information.

示例

下面的控制台应用程序创建一个新 DataTable,并将该表的架构写入 MemoryStreamThe following console application creates a new DataTable, and writes the schema for that table to a MemoryStream. 然后,该示例创建一个新的 DataTable,并使用 StreamReader (从 TextReader继承)作为其源,从已保存的 XML 架构读取其架构。Then, the example creates a new DataTable and reads its schema from the saved XML schema, using a StreamReader (which inherits from TextReader) as its source.

private static void DemonstrateReadWriteXMLSchemaWithReader()
{
    DataTable table = CreateTestTable("XmlDemo");
    PrintSchema(table, "Original table");

    // Write the schema to XML in a memory stream.
    System.IO.MemoryStream xmlStream = new System.IO.MemoryStream();
    table.WriteXmlSchema(xmlStream);

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

    DataTable newTable = new DataTable();
    System.IO.StreamReader reader = 
        new System.IO.StreamReader(xmlStream);
    newTable.ReadXmlSchema(reader);

    // Print out values in the table.
    PrintSchema(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 PrintSchema(DataTable table, string label)
{
    // Display the schema of the supplied DataTable:
    Console.WriteLine(label);
    foreach (DataColumn column in table.Columns)
    {
        Console.WriteLine("\t{0}: {1}", 
            column.ColumnName, column.DataType.Name);
    }
    Console.WriteLine();
}
Private Sub DemonstrateReadWriteXMLSchemaWithReader()
  Dim table As DataTable = CreateTestTable("XmlDemo")
  PrintSchema(table, "Original table")

  ' Write the schema to XML in a memory stream.
  Dim xmlStream As New System.IO.MemoryStream()
  table.WriteXmlSchema(xmlStream)

  ' Rewind the memory stream.
  xmlStream.Position = 0

  Dim newTable As New DataTable
  Dim reader As New System.IO.StreamReader(xmlStream)
  newTable.ReadXmlSchema(reader)

  ' Print out values in the table.
  PrintSchema(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 PrintSchema(ByVal table As DataTable, _
  ByVal label As String)

  ' Display the schema of the supplied DataTable:
  Console.WriteLine(label)
  For Each column As DataColumn In table.Columns
    Console.WriteLine("{0}{1}: {2}", ControlChars.Tab, _
      column.ColumnName, column.DataType.Name)
  Next column
End Sub

注解

使用 ReadXmlSchema 方法为 DataTable创建架构。Use the ReadXmlSchema method to create the schema for a DataTable. 此架构包括表、关系和约束定义。The schema includes table, relation, and constraint definitions.

若要将架构写入 XML 文档,请使用 WriteXmlSchema 方法。To write a schema to an XML document, use the WriteXmlSchema method.

根据 XSD 标准解释 XML 架构。The XML schema is interpreted according to the XSD standard.

如果 msdata: DataType 和 xs: type 类型不匹配,则可能发生数据损坏。Data corruption can occur if the msdata:DataType and the xs:type types do not match. 不会引发异常。No exception will be thrown.

通常调用 ReadXmlSchema 方法,然后调用用于填充 DataTableReadXml 方法。The ReadXmlSchema method is generally invoked before invoking the ReadXml method which is used to fill the DataTable.

若要使用 XML 架构创建嵌套关系,请使用隐式嵌套元素。To create a nested relation using XML schema, use implicit nested elements. 您还可以将嵌套关系重新配置为使用显式列名称。You can also reconfigure the nested relation to use explicit column names. 为了使相应的数据表参与嵌套关系,必须隐式嵌套元素。Elements must be implicitly nested in order for the corresponding DataTables to participate in a nested relation.

另请参阅

ReadXmlSchema(Stream)

使用指定的流将 XML 架构读入 DataTableReads an XML schema into the DataTable using the specified stream.

public:
 void ReadXmlSchema(System::IO::Stream ^ stream);
public void ReadXmlSchema (System.IO.Stream stream);
member this.ReadXmlSchema : System.IO.Stream -> unit

参数

stream
Stream

用于读取架构的流。The stream used to read the schema.

示例

下面的控制台应用程序创建一个新 DataTable,并将该表的架构写入 MemoryStreamThe following console application creates a new DataTable, and writes the schema for that table to a MemoryStream. 然后,该示例创建一个新的 DataTable,并从保存的 XML 架构读取其架构。Then, the example creates a new DataTable and reads its schema from the saved XML schema.

private static void DemonstrateReadWriteXMLSchemaWithStream()
{
    DataTable table = CreateTestTable("XmlDemo");
    PrintSchema(table, "Original table");

    // Write the schema to XML in a memory stream.
    System.IO.MemoryStream xmlStream = new System.IO.MemoryStream();
    table.WriteXmlSchema(xmlStream);

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

    DataTable newTable = new DataTable();
    newTable.ReadXmlSchema(xmlStream);

    // Print out values in the table.
    PrintSchema(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 PrintSchema(DataTable table, string label)
{
    // Display the schema of the supplied DataTable:
    Console.WriteLine(label);
    foreach (DataColumn column in table.Columns)
    {
        Console.WriteLine("\t{0}: {1}", column.ColumnName, 
            column.DataType.Name);
    }
    Console.WriteLine();
}
Private Sub DemonstrateReadWriteXMLSchemaWithStream()
  Dim table As DataTable = CreateTestTable("XmlDemo")
  PrintSchema(table, "Original table")

  ' Write the schema to XML in a memory stream.
  Dim xmlStream As New System.IO.MemoryStream()
  table.WriteXmlSchema(xmlStream)

  ' Rewind the memory stream.
  xmlStream.Position = 0

  Dim newTable As New DataTable
  newTable.ReadXmlSchema(xmlStream)

  ' Print out values in the table.
  PrintSchema(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 PrintSchema(ByVal table As DataTable, _
  ByVal label As String)

  ' Display the schema of the supplied DataTable:
  Console.WriteLine(label)
  For Each column As DataColumn In table.Columns
    Console.WriteLine("{0}{1}: {2}", ControlChars.Tab, _
      column.ColumnName, column.DataType.Name)
  Next column
End Sub

注解

使用 ReadXmlSchema 方法为 DataTable创建架构。Use the ReadXmlSchema method to create the schema for a DataTable. 此架构包括表、关系和约束定义。The schema includes table, relation, and constraint definitions.

若要将架构写入 XML 文档,请使用 WriteXmlSchema 方法。To write a schema to an XML document, use the WriteXmlSchema method.

根据 XSD 标准解释 XML 架构。The XML schema is interpreted according to the XSD standard.

如果 msdata: DataType 和 xs: type 类型不匹配,则可能发生数据损坏。Data corruption can occur if the msdata:DataType and the xs:type types do not match. 不会引发异常。No exception will be thrown.

通常调用 ReadXmlSchema 方法,然后调用用于填充 DataTableReadXml 方法。The ReadXmlSchema method is generally invoked before invoking the ReadXml method which is used to fill the DataTable.

若要使用 XML 架构创建嵌套关系,请使用隐式嵌套元素。To create a nested relation using XML schema, use implicit nested elements. 您还可以将嵌套关系配置为使用显式列名称。You can also configure the nested relation to use explicit column names. 为了使相应的数据表参与嵌套关系,必须隐式嵌套元素。Elements must be implicitly nested in order for the corresponding DataTables to participate in a nested relation.

另请参阅

适用于