Inquiridor
DataSet xml

Pergunta
-
Como faço para jogar essa informação em um dataset ou data table?
<dsMessage xmlns="http://tempuri.org/dsMessage.xsd">
<Table>
<id_message>85421</id_message >
<id_message_device>5</id_message_device>
<country>11</country>
<phone>111111111</phone>
<status>Mensagem Enviada</status>
<response></response>
<dt_send>21/03/2005 12:43:33</dt_send>
<dt_delivered>21/03/2005 12:43:38</dt_delivered>
<dt_received></dt_received>
<dt_answered></dt_answered>
<id_message_partner>185245</id_message_partner>
</Table >
</dsMessage>Att,
Ricardo
Todas as Respostas
-
Dê uma olhada no método ReadXml() do DataSet:
DataSet ds = new DataSet(); ds.ReadXml(<Arquivo>); foreach (DataRow dr in ds.Tables["Table"].Rows) { foreach (DataColumn dc in ds.Tables["Table"].Columns) { Console.WriteLine("Registro: {0}, Nome do Campo: {1}, Valor: {2}", ds.Tables["Table"].Rows.IndexOf(dr), dc.ColumnName, dr[dc].ToString()); }
}
O método tem sobrecargas que permitem a leitura do XML a partir de uma stream, XmlReader etc., ao invés de um arquivo.
-
-
Você está passando uma variável string contendo o XML para o método ReadXml() e a sobrecarga desse método que recebe uma string espera receber o caminho para um arquivo.
Para fazer o que quer use a sobrecarga do método que recebe um derivado do TextReader:
string xml = @"<dsMessage xmlns=""http://tempuri.org/dsMessage.xsd""> <Table> <id_message>85421</id_message > <id_message_device>5</id_message_device> <country>11</country> <phone>111111111</phone> <status>Mensagem Enviada</status> <response></response> <dt_send>21/03/2005 12:43:33</dt_send> <dt_delivered>21/03/2005 12:43:38</dt_delivered> <dt_received></dt_received> <dt_answered></dt_answered> <id_message_partner>185245</id_message_partner> </Table > </dsMessage>"; DataSet ds = new DataSet(); ds.ReadXml(new StringReader(xml)); foreach (DataRow dr in ds.Tables["Table"].Rows) { foreach (DataColumn dc in ds.Tables["Table"].Columns) { Console.WriteLine("Registro: {0}, Nome do Campo: {1}, Valor: {2}", ds.Tables["Table"].Rows.IndexOf(dr), dc.ColumnName, dr[dc].ToString()); } }