DataTable.ReadXml Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Lit le schéma et les données XML dans le DataTable.
Surcharges
ReadXml(Stream) |
Lit le schéma et les données XML dans le DataTable à l'aide du Stream spécifié. |
ReadXml(TextReader) |
Lit le schéma et les données XML dans le DataTable à l'aide du TextReader spécifié. |
ReadXml(String) |
Lit le schéma et les données XML dans le DataTable à partir du fichier spécifié. |
ReadXml(XmlReader) |
Lit le schéma et les données XML dans le DataTable à l'aide du XmlReader spécifié. |
Remarques
La ReadXml méthode permet de lire uniquement les données, ou à la fois les données et le schéma dans un DataTable document XML, tandis que la ReadXmlSchema méthode lit uniquement le schéma. Pour lire les données et le schéma, utilisez l’une ReadXML
des surcharges qui incluent le XmlReadMode
paramètre et définissez sa valeur sur ReadSchema
.
Notez qu’il en va de même pour les WriteXml méthodes et WriteXmlSchema , respectivement. Pour écrire des données XML, ou un schéma et des données à partir du DataTable
, utilisez la WriteXml
méthode . Pour écrire uniquement le schéma, utilisez la WriteXmlSchema
méthode .
Notes
Un InvalidOperationException est levée si un type de colonne dans le DataRow
en cours de lecture ou d’écriture dans implémente IDynamicMetaObjectProvider et n’implémente IXmlSerializablepas .
ReadXml(Stream)
- Source:
- DataTable.cs
- Source:
- DataTable.cs
- Source:
- DataTable.cs
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
Paramètres
Retours
XmlReadMode utilisé pour lire les données.
Exemples
L’exemple suivant crée un DataTable contenant deux colonnes et dix lignes. L’exemple écrit le schéma et les DataTable données dans un flux de mémoire, en appelant la WriteXml méthode . L’exemple crée une seconde DataTable et appelle la ReadXml méthode pour la remplir de schéma et de données.
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
Remarques
Le courant DataTable et ses descendants sont chargés avec les données du fourni Stream. Le comportement de cette méthode est identique à celui de la DataSet.ReadXml méthode, sauf que dans ce cas, les données sont chargées uniquement pour la table active et ses descendants.
La ReadXml méthode permet de lire les données uniquement, ou les données et le schéma dans un à partir d’un DataTable document XML, tandis que la ReadXmlSchema méthode lit uniquement le schéma.
Notez qu’il en va de même pour les WriteXml méthodes et WriteXmlSchema , respectivement. Pour écrire des données XML, ou des schémas et des données à partir de , DataTable
utilisez la WriteXml
méthode . Pour écrire uniquement le schéma, utilisez la WriteXmlSchema
méthode .
Notes
Un InvalidOperationException sera levée si un type de colonne dans le DataRow
en cours de lecture ou écrit dans implémente IDynamicMetaObjectProvider et n’implémente IXmlSerializablepas .
Si un schéma en ligne est spécifié, le schéma en ligne est utilisé pour étendre la structure relationnelle existante avant le chargement des données. S’il existe des conflits (par exemple, la même colonne dans la même table définie avec différents types de données), une exception est levée.
Si aucun schéma en ligne n’est spécifié, la structure relationnelle est étendue par inférence, si nécessaire, en fonction de la structure du document XML. Si le schéma ne peut pas être étendu via l’inférence afin d’exposer toutes les données, une exception est levée.
Notes
le DataSet
n’associe pas un élément XML à son correspondant DataColumn
ou DataTable
lorsque des caractères XML légaux tels que ( » _ ») sont placés dans une séquence d’échappement dans le code XML sérialisé. Le DataSet
lui-même échappe uniquement aux caractères XML non autorisés dans les noms d’éléments XML et ne peut donc consommer que le même. Lorsque des caractères légaux dans le nom de l’élément XML sont placés dans une séquence d’échappement, l’élément est ignoré lors du traitement.
Voir aussi
S’applique à
ReadXml(TextReader)
- Source:
- DataTable.cs
- Source:
- DataTable.cs
- Source:
- DataTable.cs
Lit le schéma et les données XML dans le DataTable à l'aide du TextReader spécifié.
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
Paramètres
- reader
- TextReader
TextReader qui sera utilisé pour lire les données.
Retours
XmlReadMode utilisé pour lire les données.
Exemples
L’exemple suivant crée un DataTable contenant deux colonnes et dix lignes. L’exemple écrit le schéma et les DataTable données dans un flux de mémoire, en appelant la WriteXml méthode . L’exemple crée une seconde DataTable et appelle la ReadXml méthode pour la remplir de schéma et de données.
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
Remarques
Le courant DataTable et ses descendants sont chargés avec les données du fourni TextReader. Le comportement de cette méthode est identique à celui de la DataSet.ReadXml méthode, sauf que dans ce cas, les données sont chargées uniquement pour la table active et ses descendants.
La ReadXml méthode permet de lire les données uniquement, ou les données et le schéma dans un à partir d’un DataTable document XML, tandis que la ReadXmlSchema méthode lit uniquement le schéma.
Notez qu’il en va de même pour les WriteXml méthodes et WriteXmlSchema , respectivement. Pour écrire des données XML, ou des schémas et des données à partir de , DataTable
utilisez la WriteXml
méthode . Pour écrire uniquement le schéma, utilisez la WriteXmlSchema
méthode .
Notes
Un InvalidOperationException sera levée si un type de colonne dans le DataRow
en cours de lecture ou écrit dans implémente IDynamicMetaObjectProvider et n’implémente IXmlSerializablepas .
Si un schéma en ligne est spécifié, le schéma en ligne est utilisé pour étendre la structure relationnelle existante avant le chargement des données. S’il existe des conflits (par exemple, la même colonne dans la même table définie avec différents types de données), une exception est levée.
Si aucun schéma en ligne n’est spécifié, la structure relationnelle est étendue par inférence, si nécessaire, en fonction de la structure du document XML. Si le schéma ne peut pas être étendu via l’inférence afin d’exposer toutes les données, une exception est levée.
Notes
le DataSet
n’associe pas un élément XML à son correspondant DataColumn
ou DataTable
lorsque des caractères XML légaux tels que ( » _ ») sont placés dans une séquence d’échappement dans le code XML sérialisé. Le DataSet
lui-même échappe uniquement aux caractères XML non autorisés dans les noms d’éléments XML et ne peut donc consommer que le même. Lorsque des caractères légaux dans le nom de l’élément XML sont placés dans une séquence d’échappement, l’élément est ignoré lors du traitement.
Voir aussi
S’applique à
ReadXml(String)
- Source:
- DataTable.cs
- Source:
- DataTable.cs
- Source:
- DataTable.cs
Lit le schéma et les données XML dans le DataTable à partir du fichier spécifié.
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
Paramètres
- fileName
- String
Nom du fichier à partir duquel lire les données.
Retours
XmlReadMode utilisé pour lire les données.
Exemples
L’exemple suivant crée un DataTable contenant deux colonnes et dix lignes. L’exemple écrit le schéma et les DataTable données sur le disque. L’exemple crée une seconde DataTable et appelle la ReadXml méthode pour la remplir de schéma et de données.
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
Remarques
Le courant DataTable et ses descendants sont chargés avec les données du fichier nommé dans le fourni String. Le comportement de cette méthode est identique à celui de la DataSet.ReadXml méthode, sauf que dans ce cas, les données sont chargées uniquement pour la table active et ses descendants.
La ReadXml méthode permet de lire les données uniquement, ou les données et le schéma dans un à partir d’un DataTable document XML, tandis que la ReadXmlSchema méthode lit uniquement le schéma.
Notez qu’il en va de même pour les WriteXml méthodes et WriteXmlSchema , respectivement. Pour écrire des données XML, ou des schémas et des données à partir de , DataTable
utilisez la WriteXml
méthode . Pour écrire uniquement le schéma, utilisez la WriteXmlSchema
méthode .
Notes
Un InvalidOperationException sera levée si un type de colonne dans le DataRow
en cours de lecture ou écrit dans implémente IDynamicMetaObjectProvider et n’implémente IXmlSerializablepas .
Si un schéma en ligne est spécifié, le schéma en ligne est utilisé pour étendre la structure relationnelle existante avant le chargement des données. S’il existe des conflits (par exemple, la même colonne dans la même table définie avec différents types de données), une exception est levée.
Si aucun schéma en ligne n’est spécifié, la structure relationnelle est étendue par inférence, si nécessaire, en fonction de la structure du document XML. Si le schéma ne peut pas être étendu via l’inférence afin d’exposer toutes les données, une exception est levée.
Notes
le DataSet
n’associe pas un élément XML à son correspondant DataColumn
ou DataTable
lorsque des caractères XML légaux tels que ( » _ ») sont placés dans une séquence d’échappement dans le code XML sérialisé. Le DataSet
lui-même échappe uniquement aux caractères XML non autorisés dans les noms d’éléments XML et ne peut donc consommer que le même. Lorsque des caractères légaux dans le nom de l’élément XML sont placés dans une séquence d’échappement, l’élément est ignoré lors du traitement.
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");
}
}
Voir aussi
S’applique à
ReadXml(XmlReader)
- Source:
- DataTable.cs
- Source:
- DataTable.cs
- Source:
- DataTable.cs
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
Paramètres
Retours
XmlReadMode utilisé pour lire les données.
Exemples
L’exemple suivant crée un DataTable contenant deux colonnes et dix lignes. L’exemple écrit le DataTable schéma et les données dans un XmlReader. L’exemple crée une seconde DataTable et appelle la ReadXml méthode pour la remplir avec le schéma et les XmlReader données du 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
Remarques
Le courant DataTable et ses descendants sont chargés avec les données du fichier nommé dans le fourni XmlReader. Le comportement de cette méthode est identique à celui de la ReadXml méthode, sauf que dans ce cas, les données sont chargées uniquement pour la table active et ses descendants.
La ReadXml méthode permet de lire les données uniquement, ou les données et le schéma dans un à partir d’un DataTable document XML, tandis que la ReadXmlSchema méthode lit uniquement le schéma.
Notez qu’il en va de même pour les WriteXml méthodes et WriteXmlSchema , respectivement. Pour écrire des données XML, ou des schémas et des données à partir de , DataTable
utilisez la WriteXml
méthode . Pour écrire uniquement le schéma, utilisez la WriteXmlSchema
méthode .
Notes
Un InvalidOperationException sera levée si un type de colonne dans le DataRow
en cours de lecture ou écrit dans implémente IDynamicMetaObjectProvider et n’implémente IXmlSerializablepas .
Si un schéma en ligne est spécifié, le schéma en ligne est utilisé pour étendre la structure relationnelle existante avant le chargement des données. S’il existe des conflits (par exemple, la même colonne dans la même table définie avec différents types de données), une exception est levée.
Si aucun schéma en ligne n’est spécifié, la structure relationnelle est étendue par inférence, si nécessaire, en fonction de la structure du document XML. Si le schéma ne peut pas être étendu via l’inférence afin d’exposer toutes les données, une exception est levée.
Notes
le DataSet
n’associe pas un élément XML à son correspondant DataColumn
ou DataTable
lorsque des caractères XML légaux tels que ( » _ ») sont placés dans une séquence d’échappement dans le code XML sérialisé. Le DataSet
lui-même échappe uniquement aux caractères XML non autorisés dans les noms d’éléments XML et ne peut donc consommer que le même. Lorsque les caractères juridiques dans le nom de l’élément XML sont placés dans une séquence d’échappement, l’élément est ignoré lors du traitement.