none
Importando XML RRS feed

  • Pergunta

  • Pessoal,

     

    O que eu preciso fazer não sei nem como iniciar.

     

    Tenho um sistema que gera XML. Eu preciso permitir o usuário importar esse XML pra dentro do sistema, com isso, as informações devem aparecer dentro de seus respectivos campos.

    Por exemplo, se no XML existe a tag <Nome>Dayana</Nome>  o qual foi preenchido pelo TextBox txtNome no sistema, quando importado o XML, a informação "Dayana" deve ser apresentada nesse textbox.

    Eu tenho que definir manualmente em qual parte do sistema o conteúdo de cada tag do XML deve ser apresentada quando o documento for importado? Como?

    sexta-feira, 16 de setembro de 2011 12:29

Respostas

  • Você vai ter um DataTable preenchido com as informações do XML:

    Nome      Profissao          Cidade    Fumante

    Dayana   Programadora  CTBA       False

    Supondo que você tenha apenas uma linha de informação no seu XML:

    txtNome.Text = ds.Tables(0).Rows(0).Item("Nome").ToString()
    txtProfissao.Text = ds.Tables(0).Rows(0).Item("Profissao").ToString()
    txtCidade.Text = ds.Tables(0).Rows(0).Item("Cidade").ToString()
    
    chbFumante.Checked = ds.Tables(0).Rows(0).Item("Fumante")
    

    Se tiver mais de uma linha, basta montar um estrutura de loop.


    Leonardo Borges 'Xis'
    "Mas a persistência é o que leva a perfeição."
    Se a resposta for útil, marque-a. Poderá ser útil para outros desenvolvedores.
    • Sugerido como Resposta Vitor Mendes sexta-feira, 16 de setembro de 2011 13:19
    • Não Sugerido como Resposta Vitor Mendes sexta-feira, 16 de setembro de 2011 13:19
    • Sugerido como Resposta Vitor Mendes sexta-feira, 16 de setembro de 2011 13:19
    • Marcado como Resposta ForeverAlone sexta-feira, 16 de setembro de 2011 13:34
    sexta-feira, 16 de setembro de 2011 13:17

Todas as Respostas

  • Day, o DataSet consegue ler um XML e convertê-lo num formato de DataTable.

    Dim ds As DataSet
    
    ds.ReadXml(ArquivoImportado)
    
    

    Com isso, você precisa apenas fazer as validações dos campos (verificar se o usuário inseriu um documento XML válido, com a estrutura que deseja) e atribuir os valores da mesma forma que faria usando um DataSet/DataTable (percorrendo linhas, etc).

     


    Leonardo Borges 'Xis'
    "Mas a persistência é o que leva a perfeição."
    Se a resposta for útil, marque-a. Poderá ser útil para outros desenvolvedores.
    • Sugerido como Resposta Vitor Mendes sexta-feira, 16 de setembro de 2011 12:51
    sexta-feira, 16 de setembro de 2011 12:43
  • Leo,

    Carregar o XML, localizar tag... Isso tudo bem.

     

    Mas ainda nao ficou claro pra mim, como eu defino que determinada informação é pra ser mostrada em um Textbox, por exemplo, e não como uma opção assinalada em um RadioButtonList.

    sexta-feira, 16 de setembro de 2011 13:05
  • Você vai ter um DataTable preenchido com as informações do XML:

    Nome      Profissao          Cidade    Fumante

    Dayana   Programadora  CTBA       False

    Supondo que você tenha apenas uma linha de informação no seu XML:

    txtNome.Text = ds.Tables(0).Rows(0).Item("Nome").ToString()
    txtProfissao.Text = ds.Tables(0).Rows(0).Item("Profissao").ToString()
    txtCidade.Text = ds.Tables(0).Rows(0).Item("Cidade").ToString()
    
    chbFumante.Checked = ds.Tables(0).Rows(0).Item("Fumante")
    

    Se tiver mais de uma linha, basta montar um estrutura de loop.


    Leonardo Borges 'Xis'
    "Mas a persistência é o que leva a perfeição."
    Se a resposta for útil, marque-a. Poderá ser útil para outros desenvolvedores.
    • Sugerido como Resposta Vitor Mendes sexta-feira, 16 de setembro de 2011 13:19
    • Não Sugerido como Resposta Vitor Mendes sexta-feira, 16 de setembro de 2011 13:19
    • Sugerido como Resposta Vitor Mendes sexta-feira, 16 de setembro de 2011 13:19
    • Marcado como Resposta ForeverAlone sexta-feira, 16 de setembro de 2011 13:34
    sexta-feira, 16 de setembro de 2011 13:17
  • Desculpa Leo deu erro no browser, então siga o exemplo do Leo que esta totalmente correto, vamos supor que é este o XML

    <?xml version="1.0" ?>
    <Principal>
      <Clientes>
        <Nome>Maria da Silva</Nome>
        <Sexo>Feminino</Sexo>
        <DataCadastro>23/02/2007</DataCadastro>
      </Clientes>
    </Principal>
    


    VB.NET
    Dim caminhoArquivo As String = "C:\Cliente.xml"
    Dim ds As New DataSet()
    ds.ReadXml(caminhoArquivo)
    
    txtNome.Text = ds.Tables("Clientes").Rows(0)("Nome").ToString()
    txtSexo.Text = ds.Tables("Clientes").Rows(0)("Sexo").ToString()
    txtDataCadastro.Text = ds.Tables("Clientes").Rows(0)("DataCadastro").ToString()
    



    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    • Editado Vitor Mendes sexta-feira, 16 de setembro de 2011 13:22
    sexta-feira, 16 de setembro de 2011 13:21
  • Que trabalheira do cão! O_O

    Mas se é assim, lá vamos nós...

     

     

    Obrigada Leo e Vitor =)

    sexta-feira, 16 de setembro de 2011 13:34
  • Ola,

     

    Vec lembra desse post?

    http://social.msdn.microsoft.com/Forums/pt-BR/vsvbasicpt/thread/98ef5a68-ddd6-4adf-849a-4b26ee3f1aff/#b644ed52-be3e-4352-9dbb-0ab7f2846ada

     

    Ele resolve esse problema porque depois da deserializaçao vc obtem um objeto dai o codigo ficaria parecido com isso:

    Dim caminhoArquivo As String = "C:\Cliente.xml"
    Dim serializer As New XmlSerializer(cliente.GetType)
    Dim fs As New FileStream(caminhoArquivo, FileMode.Open)
    Dim reader As XmlReader = XmlReader.Create(fs)
    Dim cliente  As Cliente 
    cliente = CType(serializer.Deserialize(reader), Cliente )
    fs.Close()
    
    
    txtNome.Text = cliente.Nome
    txtSexo.Text = cliente.Sexo
    txtDataCadastro.Text = cliente.DataCadastro
    


    Como eu disse no post anterior.. a implementaçao inicial parece ser complicada mas ela vai facilitar muita coisa depois...

     

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    sexta-feira, 16 de setembro de 2011 13:49
    Moderador
  • Olá William,

     

    Lembro, lembro sim.

    A implementaçao inicial não parece, é complicada rs. Não entendi alguns pontos dos passos.

    Por isso, optei por fazer do modo que o Leo tinha me passado. E está funcionando.

    Tentar alterar algo que está funcionando pra um que eu não entendi direito e nem sei se vou fazer funcionar, é um pouco arriscado, ainda mais porque preciso cumprir prazos =}

    Não duvido que sua solução seja útil, apenas penso que agora, não é mais viável pra mim.

    De qualquer forma, muito obrigada pelo empenho em explicar =)

     

    Abs.

    segunda-feira, 19 de setembro de 2011 20:05