none
DataSet xml RRS feed

  • 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

    sexta-feira, 16 de janeiro de 2009 11:28

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.

    sexta-feira, 16 de janeiro de 2009 11:58
  • Olá Angus, eu já tinha tentado isso antes, mas da uma mensagem da a seguinte mensagem de erro: "Caractere inválido no caminho.". Sabe o que pode ser e como resolver isso?

     

    Att,

     

    Ricardo

    sexta-feira, 16 de janeiro de 2009 15:57
  • 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());
        }
    
    }

     

     

     

    sexta-feira, 16 de janeiro de 2009 20:18